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 大容量加载将失败。
请注意,如果 ID 传播已完成,则此选项不适用,并且约束检查将保留。 当 KeepIdentity=False 父级是标识字段且生成子级时,将发生此情况,并且存在一个关系。
ConnectionCommand
标识 XML 大容量加载应使用的现有连接对象(例如 ADO 或 ICommand 命令对象)。 可以使用 ConnectionCommand 属性,而不是使用 ConnectionString 属性指定连接字符串。 如果使用 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 传播已完成,则此选项不适用,触发器将保留。 当 KeepIdentity=False 父级是标识字段且生成子级时,将发生此情况,并且存在一个关系。
ForceTableLock
指定 XML 大容量加载在大容量加载期间是否应锁定数据的表。 这是一个布尔属性。 当属性设置为 TRUE 时,XML 大容量加载在大容量加载期间获取表锁。 当 XML 大容量加载设置为 FALSE 时,每次将记录插入表中时,XML 大容量加载都会获取表锁。
默认值为 FALSE。
IgnoreDuplicateKeys
指定如果尝试在键列中插入重复值,该怎么办。 如果此属性设置为 TRUE,并且尝试在键列中插入具有重复值的记录,则 SQL Server 不会插入该记录。 但它确实插入了后续记录;因此,大容量加载作不会失败。 如果此属性设置为 FALSE,当尝试在键列中插入重复值时,大容量加载将失败。
当 IgnoreDuplicateKeys 属性设置为 TRUE 时,将为表中插入的每个记录发出 COMMIT 语句。 这会降低性能。 仅当 Transaction 属性设置为 FALSE 时,该属性才可设置为 TRUE,因为事务行为是使用文件实现的。
默认值为 FALSE。
KeepIdentity
指定如何处理源文件中标识类型列的值。 这是一个布尔属性。 当属性设置为 TRUE 时,XML 大容量加载会将源文件中指定的值分配给标识列。 当属性设置为 FALSE 时,大容量加载作将忽略源中指定的标识列值。 在这种情况下,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 可以在映射架构中找到匹配 sql:relationship 和 sql:key-fields 批注,并且键字段包含单个列,则会在数据库中创建 FOREIGN KEY 约束。
请注意,如果将 SchemaGen 属性设置为 TRUE,XML 大容量加载将执行以下作:
从元素和属性名称创建必要的表。 因此,请务必不要对架构中的元素和属性名称使用 SQL Server 保留字。
返回使用 xml 数据类型格式的 sql:overflow-field 指定的任何列的溢出数据。
SGDropTables
指定是否应删除并重新创建现有表。 当 SchemaGen 属性设置为 TRUE 时,请使用此属性。 如果 SGDropTables 为 FALSE,则保留现有表。 如果此属性为 TRUE,则会删除现有表并重新创建。
默认值为 FALSE。
SGUseID
指定在创建表时是否可以在创建 PRIMARY KEY 约束时使用标识为 id 类型的映射架构中的属性。 当 SchemaGen 属性设置为 TRUE 时,请使用此属性。 如果 SGUseID 为 TRUE,SchemaGen 实用工具将使用指定为主键列的属性 dt:type="id" ,并在创建表时添加相应的 PRIMARY KEY 约束。
默认值为 FALSE。
TempFilePath
指定 XML 大容量加载为事务处理大容量加载创建临时文件的文件路径。 (仅当 Transaction 属性设置为 TRUE 时,此属性才有用。必须确保用于 XML 大容量加载的 SQL Server 帐户有权访问此路径。 如果未设置此属性,XML 大容量加载会将临时文件存储在 TEMP 环境变量中指定的位置。
交易
指定是否应将大容量加载作为事务完成,在这种情况下,如果大容量加载失败,则保证回滚。 这是一个布尔属性。 如果该属性设置为 TRUE,则大容量加载发生在事务上下文中。 TempFilePath 属性仅在事务设置为 TRUE 时才有用。
注释
如果要将二进制数据(如 bin.hex、bin.base64 XML 数据类型)加载到二进制图像 SQL Server 数据类型,则 Transaction 属性必须设置为 FALSE。
默认值为 FALSE。
XMLFragment
指定源数据是否为 XML 片段。 XML 片段是没有单个顶级(根)元素的 XML 文档。 这是一个布尔属性。 如果源文件包含 XML 片段,则必须将此属性设置为 TRUE。
默认值为 FALSE。