Модель объектов массовой загрузки XML SQL Server (SQLXML 4.0)
Объектная модель Microsoft SQL Server XML Bulk Load представляет собой объект SQLXMLBulkLoad. Этот объект поддерживает следующие свойства и методы.
Методы
- Execute
Проводит массовую загрузку данных на основании файла схемы и файла (или потока) данных, которые передаются как параметры.
Свойства
BulkLoad
Указывает, должна ли проводиться массовая загрузка. Это свойство полезно, если нужно только создать схемы (см. следующие далее описания свойств SchemaGen, SGDropTables и SGUseID), но не проводить массовую загрузку. Это свойство является логическим. Когда для свойства задано значение TRUE, проводится массовая загрузка XML. Когда свойство имеет значение FALSE, массовая загрузка XML не проводится.Значение по умолчанию — TRUE.
CheckConstraints
Указывает, следует ли проверять ограничения (например, ограничения связи «первичный-внешний ключ» между столбцами), заданные для столбцов, когда массовая загрузка XML вставляет данные в столбцы. Это свойство является логическим.Если свойство имеет значение TRUE, массовая загрузка XML проверяет ограничения для каждого вставляемого значения (а это значит, что при нарушении ограничения возникнет ошибка).
Примечание Чтобы задать этому свойству значение FALSE, необходимо иметь разрешения ALTER TABLE для целевых таблиц. Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).
Значение по умолчанию — FALSE. Когда для свойства задано значение FALSE, массовая загрузка XML при выполнении вставки не учитывает ограничения. В текущей реализации нужно определять таблицы в порядке связи первичного и внешнего ключей, заданных в схеме сопоставления. Иными словами, таблица, содержащая первичный ключ, должна быть определена раньше, чем соответствующая ей таблица с внешним ключом. В противном случае массовая загрузка XML завершится ошибкой.
Следует заметить, что при распространении ID (ID Propagation) этот параметр неприменим, и проверка ограничений будет проводиться. Это происходит в том случае, если задано KeepIdentity=False и определена связь, в которой родительский элемент является полем идентификатора, а значение назначается дочернему элементу при его формировании.
ConnectionCommand
Задает существующий объект соединения (например, командный объект ADO или ICommand), который должна использовать массовая загрузка XML. Вместо задания строки соединения с помощью свойства ConnectionString можно воспользоваться свойством ConnectionCommand. Если используется свойство ConnectionCommand, то свойство Transaction должно иметь значение TRUE.Если задано и свойство ConnectionString, и свойство ConnectionCommand, то массовая загрузка XML использует свойство, указанное последним.
Значение по умолчанию — NULL.
ConnectionString
Задает строку соединения OLE DB, содержащую необходимую информацию для установления соединения с экземпляром базы данных. Если задано и свойство ConnectionString, и свойство ConnectionCommand, то массовая загрузка XML использует свойство, указанное последним.Значение по умолчанию — NULL.
ErrorLogFile
Указывает имя файла журнала, в который массовая загрузка XML заносит сообщения об ошибках и другие виды сообщений. Значение по умолчанию —пустая строка; в этом случае занесение в журнал не производится.FireTriggers
Указывает, должны ли срабатывать триггеры, определенные в целевых таблицах, во время операции массовой загрузки. Значение по умолчанию — FALSE.Если задано значение TRUE, триггеры будут срабатывать как при обычной операции вставки.
Примечание Чтобы задать этому свойству значение FALSE, необходимо иметь разрешения ALTER TABLE для целевых таблиц. Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).
Следует заметить, что при распространении ID (ID Propagation) этот параметр неприменим, и все триггеры останутся включенными. Это происходит в том случае, если задано 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 присваивает столбцу идентификаторов собственные значения.Если в массовой загрузке XML участвует столбец, являющийся внешним ключом для столбца идентификаторов, в котором хранятся значения, сформированные 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 на вновь созданных таблицах. Однако оно создает в базе данных ограничения FOREIGN KEY, если находит соответствующие заметки sql:relationship и sql:key-fields в схеме сопоставления и если ключевое поле состоит из одного столбца.
Следует заметить, что если для свойства SchemaGen задано значение TRUE, массовая загрузка XML выполняет следующие действия:
Создает необходимые таблицы на основании имен атрибутов и элементов. Поэтому нельзя использовать зарезервированные слова SQL Server для имен атрибутов и элементов схемы.
Возвращает данные переполнения для любого столбца, обозначенного аннотацией sql:overflow-field в формате xml data type.
SGDropTables
Указывает, следует ли удалить и создать повторно существующие таблицы. Это свойство используется, когда свойство SchemaGen имеет значение TRUE. Если свойство SGDropTables имеет значение FALSE, существующие таблицы сохраняются. Если свойство имеет значение TRUE, существующие таблицы удаляются и создаются повторно.Значение по умолчанию — FALSE.
SGUseID
Указывает, будет ли атрибут, заданный в схеме сопоставления как id, использован в создании ограничения типа PRIMARY KEY при создании таблицы. Это свойство используется, когда свойство SchemaGen имеет значение TRUE. Если свойство SGUseID имеет значение TRUE, программа SchemaGen использует атрибут, для которого dt:type="id" указан в качестве столбца первичного ключа, и при создании таблицы добавляет ограничение PRIMARY KEY.Значение по умолчанию — FALSE.
TempFilePath
Указывает файловый путь, по которому массовая загрузка XML создает временные файлы для хранения данных, массово загружаемых в транзакции. (Это свойство полезно, только когда свойство Transaction имеет значение TRUE.) Следует убедиться, что у учетной записи SQL Server, используемой для массовой загрузки XML, есть доступ к этому пути. Если это свойство не установлено, массовая загрузка XML хранит временные файлы в месте, заданном переменной окружения TEMP.Transaction
Указывает, должна ли массовая загрузка выполняться в транзакции. В этом случае при неудачном завершении массовой загрузки производится откат транзакции. Это свойство является логическим. Когда свойство имеет значение TRUE, массовая загрузка XML проводится в контексте транзакции. Свойство TempFilePath полезно, только если свойство Transaction имеет значение TRUE.Примечание При загрузке двоичных данных (например, типов данных XML bin.hex, bin.base64) в двоичные типы или типы данных изображения SQL Server) для свойства Transaction следует задать значение FALSE.
Значение по умолчанию — FALSE.
XMLFragment
Указывает, являются ли исходные данные XML-фрагментом. Фрагмент XML — это XML-документ, в котором нет единственного элемента верхнего уровня. Это свойство является логическим. Если исходный файл является XML-фрагментом, для этого свойства следует задать значение TRUE.Значение по умолчанию — FALSE.