SQL Server XML 大量載入物件模型 (SQLXML 4.0)
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
識別 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)。
請注意,如果標識碼傳播已完成,則此選項不適用,且觸發程式會保留開啟。 當父系是識別欄位,並在產生時將值提供給子系時,就會發生此情況 KeepIdentity=False
。
ForceTableLock
指定 XML 大量載入複製資料的數據表是否應該在大量載入期間鎖定。 這是布爾值屬性。 當 屬性設定為TRUE時,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 條件約束。 當 SchemaGen 屬性設定為 TRUE 時,請使用此屬性。 如果 SGUseID 為 TRUE,SchemaGen 公用程式會使用 dt:type=“id” 指定為主鍵數據行的屬性,並在建立數據表時加入適當的 PRIMARY KEY 條件約束。
預設值為 FALSE。
TempFilePath
指定 XML 大量載入建立交易大量載入暫存盤的檔案路徑。 (只有當 Transaction 屬性設定為 TRUE 時,這個屬性才有用。您必須確定用於 XML 大量載入的 SQL Server 帳戶可以存取此路徑。 如果未設定這個屬性,XML 大量載入會將暫存盤儲存在 TEMP 環境變數中指定的位置。
交易
指定大量載入是否應該做為交易,在此情況下,如果大量載入失敗,則保證回復。 這是布爾值屬性。 如果 屬性設定為 TRUE,則大量載入會發生在交易式內容中。 只有在 Transaction 設定為 TRUE 時,TempFilePath 屬性才有用。
注意
如果您要將二進位數據載入二進位數據(例如 bin.hex、bin.base64 XML 數據類型至二進位映射 SQL Server 數據類型),Transaction 屬性必須設定為 FALSE。
預設值為 FALSE。
XMLFragment
指定源數據是否為 XML 片段。 XML 片段是沒有單一最上層元素的 XML 檔。 這是布爾值屬性。 如果來源檔案是由 XML 片段所組成,這個屬性就必須設定為 TRUE。
預設值為 FALSE。