XML Updategram 的指導方針和限制 (SQLXML 4.0)

適用於:SQL ServerAzure SQL 資料庫

使用 XML Updategram 時,請記住下列事項:

  • 如果您使用 updategram 進行插入作業,且在區塊前後<<>>只有一對<,則可以省略 before> 區塊。 相反地,如果是刪除作業, <可以省略後> 區塊。

  • 如果您使用 updategram 搭配同步標記中的<多個<前後<>>區塊,><則必須在區塊之前和區塊之後指定成<對之前><<之後>>形成。>

  • Updategram 中的更新會套用至 XML 架構所提供的 XML 檢視。 因此,若要讓預設對應成功,您必須在 updategram 中指定架構檔名,或者,如果未提供檔名,元素和屬性名稱必須符合資料庫中的數據表和數據行名稱。

  • SQLXML 4.0 要求 updategram 中的所有數據行值都必須在提供的架構中明確對應,才能撰寫其子元素的 XML 檢視。 此行為與舊版 SQLXML 不同,如果 sql:relationship 批注中隱含為外鍵一部分,則允許架構中未對應之數據行的值。 (請注意,這項變更不會影響將主鍵值傳播至子元素,如果未明確指定子元素的值,SQLXML 4.0 仍會發生此變更。

  • 如果您使用 Updategram 來修改二進位數據行中的數據(例如 SQL Server 映射數據類型),您必須提供 SQL Server 數據類型(例如 sql:datatype=“image”) 和 XML 數據類型的對應架構(例如 dt:type=“binhex”dt:type=“binbase64”。 二進位數據行的數據必須在 updategram 中指定; updategram 會忽略對應架構中指定的 sql:url 編碼 批注。

  • 當您撰寫 XSD 架構時,如果您為 sql:relationsql:field 批註指定的值包含特殊字元,例如空格符(例如,在 “Order Details” 數據表名稱中),這個值必須以方括弧括住(例如 “[Order Details]] )。

  • 使用 Updategram 時,不支持鏈結關聯性。 例如,如果數據表 A 和 C 是透過使用資料表 B 的鏈結關聯性相關,則嘗試執行 updategram 時會發生下列錯誤:

    There is an inconsistency in the schema provided.  
    

    即使架構和 Updategram 都正確且格式有效,如果鏈結關聯性存在,也會發生此錯誤。

  • Updategram 不允許在更新期間將影像類型數據傳遞為參數。

  • 二進位大型物件 (BLOB) 類型,例如 text/ntext 和 images,在使用 updategram 時,不應該在 <中的 前> 區塊中使用,因為這會包含它們以用於並行控制。 這可能會導致 SQL Server 發生問題,因為 BLOB 類型的比較有限制。 例如,WHERE 子句中使用 LIKE 關鍵詞來比較文字數據類型的數據行;不過,在數據大小大於 8K 的 BLOB 類型案例中,比較將會失敗。

  • ntext 數據中的特殊字元可能會導致 SQLXML 4.0 發生問題,因為 BLOB 類型的比較限制。 例如,在用於 ntext 類型的數據行並行檢查時,在 之前區塊中使用 “[Serializable]”>< 將會失敗,並出現下列 SQLOLEDB 錯誤描述:

    Empty update, no updatable rows found   Transaction aborted  
    

另請參閱

Updategram 安全性考慮 (SQLXML 4.0)