Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Янин В.Л. "Новгородские акты XII-XV Хронологический комментарий" (История)

Майринк Г. "Белый доминиканец " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 2" (Художественная литература)

Петров Г.И. "Отлучение Льва Толстого " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 1 " (Художественная литература)
Реклама

Microsoft SQL server. Реализация и обслуживание Учебный курс - Microsoft press

Microsoft press Microsoft SQL server. Реализация и обслуживание Учебный курс — Microsoft Press, 2007. — 766 c.
Предыдущая << 1 .. 117 118 119 120 121 122 < 123 > 124 125 126 127 128 129 .. 343 >> Следующая

При использовании пакетов обновлений SQLXML для создания выражений Transact-SQL, предназначенных для добавления, удаления и обновления данных, помните о следующих требованиях:
? Чтобы создать инструкцию Transact-SQL INSERT, фрагмент XML должен находиться в разделе after. Раздел before можно опустить.
? Чтобы создать инструкцию Transact-SQL DELETE, фрагмент XML должен быть в разделе before. Раздел after можно опустить.
? Чтобы создать инструкцию Transact-SQL UPDATE, необходимо объявить разделы before и after. На основании различий между ними SQLXML формулирует инструкцию UPDATE.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Специальные ключевые слова пакетов обновлений для добавления, обновления и удаления
С помощью специальных ключевых слов можно выполнять такие задачи, как обработка значений null, обработка автоматических значений (столбцов Identity или столбцов с идентификатором GUID, например) и сопоставление версии данных before с версией after, когда в одном разделе sync имеется нескольких узлов before и after.
Подробнее о специальных ключевых словах, которые могут быть использованы в XML-структуре, можно прочитать в следующих разделах Электронной документации по SQL Server 2005:
? Inserting Data Using XML Updategrams;
? Updating Data Using XML Updategrams;
? Deleting Data Using XML Updategrams. _
Возьмем тот же пример, что мы использовали для метода modifyQ типа данных XML, и применим в нем пакеты обновлений. Сначала нужно создать аннотированную XSD-схему с именем Department.xsd для таблицы HumanResources. Departments в базе данных Adventure Works:
<?xml version=”1.0”?>
<xs:schema id="Department” xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:xs=”http://www.w3.org/2001/XMLSchema">
Занятие 4
Изменение XML-данных
<xs:element name="NewDepartment" sql:relation="HumanResources.Department">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" sql:field="DepartmentID" />
<xs:element name="Name" />
<xs:element name="GroupName" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Теперь можно создать пакет обновлений для добавления нового отдела и сохранить его в файле с именем DepartmentUpdg.xml:
<R00T xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:header>
<updg:param name=,,DepartmentName"x/updg:param>
</updg:header>
<updg:sync mapping-schema^"Department.xsd”>
<updg:before>
</updg:before>
<updg:after>
<NewDepartment>
<Name>@DepartmentName</Name>
<GroupName>Quality Assurance</GroupName>
</NewDepartment>
</updg:after>
</updg:sync>
</R00T>
И, наконец, создадим приложение .NET для исполнения пакета обновлений. Не забудьте добавить ссылку на библиотеку Microsoft.Data.dll:
SqlXmlCommand cmd = new SqlXmlCommand("строка_соединения");
cmd. CommandStream = new FileStream("DepartmentUpdg.xml", FileMode.Open, FileAccess.Read);
cmd. CommandType = SqlXmlCommandType.DiffGram;
SqlXmlParameter p = cmd.CreateParameter(); p. Name = "@DepartmentName"; p.Value = "Customer Assistance";
cmd. ExecuteNonQuery();
После исполнения этого кода будет создан следующий динамический код Transact-SQL, исполняемый в SQL Server 2005:
exec sp_executesql N' SET XACT_AB0RT ON BEGIN TRAN
DECLARE @eip INT, @r_ int, @e_ int SET @eip = 0
254 Управление XML-данными
Глава 8
INSERT HumanResources.Department (Name, GroupName) VALUES (N' ’@DepartmentName’ N’ 'Quality
Assurance’ ’); SELECT @e_ = @@ERR0R, @r_ = @@R0WC0UNT IF (@e_ != 0 OR @r_ != 1) SET @elp = 1
IF (@eip != 0) ROLLBACK ELSE COMMIT SET XACT_ABORT OFF ’,N'@DepartmentName nvarchar(19)N'Customer Assistance’
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Будьте внимательны при решении проблем одновременной работы с базой данных
Если один пользователь изменяет данные в базе чуть раньше другого пользователя, разделы before и after могут потерять актуальность. Пакеты обновлений используют нежесткий подход для обработки одновременных обновлений данных в базе данных. Эта тема выходит за рамки данной главы. Подробее о том, как решать проблемы при одновременной работе с базой данных в пакетах обновлений, можно прочитать в разделе «Handling Database Concurrency Issues in Updategrams» в Электронной документации по SQL Server 2005.
Упражнение: изменение XML-данных
Это упражнение основано на результатах упражнений из занятий 2 и 3. Если вы не выполняли эти упражнения, сделайте это сейчас. В этом упражнении вы измените XML-данные в таблице UniversalLog с помощью XML DML. Затем вы создадите пакет обновлений, чтобы добавить новую запись в таблицу UniversalLog.
ПРИМЕЧАНИЕ Код для упражнения имеется на сопроводительном компакт-диске
Решения к упражнению 1 из этого занятия приведены в файле Practice Files\Chapter8\ Lesson 4\CompleteLesson4.sql.
Упражнение 1. Изменение XML-данных с использованием XML DML
В этом упражнении вы создадите инструкции Transact-SQL для изменения содержимого таблицы UniversalLog. Если вы выполнили упражнения в предыдущих занятиях, таблица UniversalLog должна содержать пять строк.
1. Первая строка — из приложения SalesApp. Столбец LogRecord содержит следующий фрагмент XML:
Предыдущая << 1 .. 117 118 119 120 121 122 < 123 > 124 125 126 127 128 129 .. 343 >> Следующая