Поделиться через


Объектная модель массовой загрузки XML SQL Server (SQLXML 4.0)

Область применения: SQL Server База данных SQL Azure

Объектная модель массовой загрузки MICROSOFT SQL Server XML состоит из объекта SQLXMLBulkLoad. Этот объект поддерживает следующие свойства и методы.

Методы

Выполнить
Проводит массовую загрузку данных на основании файла схемы и файла (или потока) данных, которые передаются как параметры.

Свойства

BulkLoad
Указывает, должна ли проводиться массовая загрузка. Это свойство полезно, если вы хотите создать только схемы (см. свойства SchemaGen, SGDropTables и SGUseID, которые следуют) и не выполняют массовую загрузку. Это свойство является логическим. Когда свойство имеет значение TRUE, проводится массовая загрузка XML. Когда свойство имеет значение FALSE, массовая загрузка XML не проводится.

Значение по умолчанию — TRUE.

CheckConstraints
Указывает, следует ли проверять ограничения (например, ограничения связи «первичный ключ - внешний ключ» между столбцами), заданные для столбцов, когда массовая загрузка XML вставляет данные в столбцы. Это свойство является логическим.

Если свойство имеет значение TRUE, массовая загрузка XML проверяет ограничения для каждого вставляемого значения (а это значит, что при нарушении ограничения возникнет ошибка).

Примечание.

Чтобы оставить это свойство как FALSE, необходимо иметь разрешения ALTER TABLE в целевых таблицах. Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).

Значение по умолчанию — FALSE. Когда для свойства задано значение FALSE, массовая загрузка XML при выполнении вставки не учитывает ограничения. В текущей реализации нужно определять таблицы в порядке связи первичного и внешнего ключей, заданных в схеме сопоставления. Иными словами, таблица, содержащая первичный ключ, должна быть определена раньше, чем соответствующая ей таблица с внешним ключом. В противном случае массовая загрузка XML завершится ошибкой.

Следует заметить, что, если проводится распространение идентификаторов, этот параметр неприменим и проверка ограничений будет проводиться. Это происходит в том случае, если задано KeepIdentity=False и определена связь, в которой родительский элемент является полем идентификатора, а значение назначается дочернему элементу при его формировании.

ConnectionCommand
Определяет существующий объект подключения (например, объект команды ADO или ICommand), который должен использовать массовая загрузка XML. Свойство ConnectionCommand можно использовать вместо указания строка подключения со свойством ConnectionString. Свойство Transaction должно иметь значение TRUE, если используется ConnectionCommand.

При использовании свойств ConnectionString и ConnectionCommand xml Bulk Load использует последнее указанное свойство.

Значение по умолчанию — NULL.

ConnectionString
Задает строку соединения OLE DB, содержащую необходимую информацию для установления соединения с экземпляром базы данных. При использовании свойств ConnectionString и ConnectionCommand xml Bulk Load использует последнее указанное свойство.

Значение по умолчанию — NULL.

ErrorLogFile
Указывает имя файла журнала, в который массовая загрузка XML заносит сообщения об ошибках и другие виды сообщений. Значение по умолчанию — пустая строка; в этом случае занесение в журнал не производится.

FireTriggers
Указывает, должны ли срабатывать триггеры, определенные в целевых таблицах, во время операции массовой загрузки. Значение по умолчанию — FALSE.

Если задано значение TRUE, триггеры будут срабатывать как при обычной операции вставки.

Примечание.

Чтобы оставить это свойство как FALSE, необходимо иметь разрешения ALTER TABLE в целевых таблицах. Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).

Следует заметить, что, если проводится распространение идентификаторов, этот параметр неприменим и все триггеры останутся включенными. Это происходит в том случае, если задано KeepIdentity=False и определена связь, в которой родительский элемент является полем идентификатора, а значение назначается дочернему элементу при его формировании.

ForceTableLock
Указывает, следует ли блокировать таблицы, в которые массовая загрузка XML копирует данные, на время массовой загрузки. Это свойство является логическим. Когда свойство имеет значение TRUE, массовая загрузка XML блокирует таблицы на все время своей работы. Когда для свойства задано значение FALSE, массовая загрузка XML блокирует таблицу только на то время, когда вставляет в нее запись.

Значение по умолчанию — FALSE.

IgnoreDuplicateKeys
Указывает, что делать в случае попытки вставить повторяющиеся значения в ключевой столбец. Если это свойство имеет значение TRUE, а попытка вставить запись с повторяющимся значением в ключевом столбце, SQL Server не вставляет эту запись. Однако следующая запись будет вставлена; таким образом, операция массовой загрузки XML завершится успешно. Если свойство имеет значение FALSE, в случае попытки вставить повторяющиеся значения в ключевой столбец операция массовой загрузки XML завершится ошибкой.

Если для свойства IgnoreDuplicateKeys задано значение TRUE, инструкция COMMIT выдается для каждой записи, вставленной в таблицу. Это замедляет операцию. Свойство может иметь значение TRUE, только если свойству Transaction присвоено значение FALSE, так как поведение транзакций реализуется с помощью файлов.

Значение по умолчанию — FALSE.

KeepIdentity
Указывает, как обрабатывать значения столбца типа Identity в исходном файле. Это свойство является логическим. Когда свойство имеет значение TRUE, массовая загрузка XML назначает столбцу идентификаторов значения, заданные в исходном файле. Когда свойство имеет значение FALSE, массовая загрузка XML не учитывает значения столбца идентификаторов, заданные в исходном файле. В этом случае SQL Server назначает значение столбцу удостоверений.

Если массовая загрузка включает столбец, являющийся внешним ключом, ссылающимся на столбец удостоверений, в котором хранятся созданные значения SQL Server, массовая загрузка соответствующим образом распространяет эти значения удостоверений в столбец внешнего ключа.

Значение этого свойства применяется ко всем столбцам, задействованным в массовой загрузке. Значение по умолчанию — TRUE.

Примечание.

Чтобы оставить это свойство как TRUE, необходимо иметь разрешения ALTER TABLE в целевых таблицах. В противном случае ему должно быть присвоено значение FALSE. Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).

KeepNulls
Указывает, какое значение будет использовано для столбца, не имеющего соответствующего атрибута или дочернего элемента в XML-документе. Это свойство является логическим. Если свойство имеет значение TRUE, массовая загрузка XML назначит этому столбцу значение NULL. Столбцу не будет присвоено значение по умолчанию, даже если таковое установлено на сервере. Значение этого свойства применяется ко всем столбцам, задействованным в массовой загрузке.

Значение по умолчанию — FALSE.

SchemaGen
Указывает, следует ли создавать нужные таблицы до операции массовой загрузки. Это свойство является логическим. Если свойство имеет значение TRUE, таблицы, заданные в схеме сопоставления, будут созданы (база данных должна существовать). Если одна или несколько таблиц уже существуют в базе данных, свойство SGDropTables определяет, следует ли удалять и повторно создавать эти таблицы.

Значением по умолчанию для свойства SchemaGen является FALSE. SchemaGen не создает ограничения PRIMARY KEY для только что созданных таблиц. Однако SchemaGen создает ограничения FOREIGN KEY в базе данных, если он может найти соответствующие заметки sql:relationship и sql:key-fields в схеме сопоставления и если ключевое поле состоит из одного столбца.

Обратите внимание, что если для свойства SchemaGen задано значение TRUE, массовая загрузка XML выполняет следующие действия:

  • создает необходимые таблицы на основании имен атрибутов и элементов. Поэтому важно не использовать зарезервированные слова SQL Server для имен элементов и атрибутов в схеме.

  • Возвращает данные переполнения для любого столбца, указанного с помощью поля sql:overflow-field в формате xml-типа данных.

SGDropTables
Указывает, следует ли удалить и создать повторно существующие таблицы. Это свойство используется, если для свойства SchemaGen задано значение TRUE. Если SGDropTable имеет значение FALSE, существующие таблицы сохраняются. Если свойство имеет значение TRUE, существующие таблицы удаляются и создаются повторно.

Значение по умолчанию — FALSE.

SGUseID
Указывает, можно ли использовать атрибут в схеме сопоставления, определяемой как тип идентификатора , при создании ограничения PRIMARY KEY. Используйте это свойство, если для свойства SchemaGen задано значение TRUE. Если SGUseID имеет значение TRUE, программа SchemaGen использует атрибут, для которого dt:type="id" указывается в качестве столбца первичного ключа и добавляет соответствующее ограничение PRIMARY KEY при создании таблицы.

Значение по умолчанию — FALSE.

TempFilePath
Указывает файловый путь, по которому массовая загрузка XML создает временные файлы для хранения данных, массово загружаемых в транзакции. (Это свойство полезно только в том случае, если свойству Transaction присвоено значение TRUE.) Необходимо убедиться, что учетная запись SQL Server, используемая для массовой загрузки XML, имеет доступ к этому пути. Если это свойство не установлено, массовая загрузка XML хранит временные файлы в месте, заданном переменной среды TEMP.

Транзакция
Указывает, должна ли массовая загрузка выполняться в транзакции. В этом случае при неудачном завершении массовой загрузки производится откат транзакции. Это свойство является логическим. Когда свойство имеет значение TRUE, массовая загрузка XML проводится в контексте транзакции. Свойство TempFilePath полезно только в том случае, если для транзакции задано значение TRUE.

Примечание.

Если вы загружаете двоичные данные (например, bin.hex, bin.base64 XML-типы данных в двоичные, типы данных SQL Server образа), свойство Transaction должно иметь значение FALSE.

Значение по умолчанию — FALSE.

XMLFragment
Указывает, являются ли исходные данные XML-фрагментом. Фрагмент XML — это XML-документ, в котором нет единственного элемента верхнего уровня. Это свойство является логическим. Если исходный файл является XML-фрагментом, для этого свойства следует задать значение TRUE.

Значение по умолчанию — FALSE.