共用方式為


標準表單和模式限制

XSD 模式限制允許限制簡單類型的字詞空間。 當對具有多種可能語彙表示的類型施加模式限制條件時,某些值可能會導致驗證時的非預期行為。

之所以發生此行為,是因為這些值的語彙表示不會儲存在資料庫中。 因此,當串行化為輸出時,這些值會轉換成其標準表示法。 如果檔包含其標準格式不符合其類型模式限制的值,如果用戶嘗試重新插入檔,則會拒絕檔。

為避免這種情況,SQL Server 會拒絕任何包含無法重新插入值的 XML 檔,因為其標準格式違反模式限制。 例如,“33.000” 值不會針對衍生自 xs:decimal 且模式限製為 “33\.0+” 的類型進行驗證。 雖然 「33.000」 符合此模式,但標準形式 「33」 則不會。

因此,當您將樣式 Facet 套用至從下列基本類型衍生的類型時,應該小心:booleandecimalfloatdoubledateTimetimedatehexBinarybase64Binary。 當您將任何這類元件新增至架構集合時,SQL Server 會發出警告。

浮點值的不精確串行化有類似的問題。 由於 SQL Server 所使用的浮點串行化演算法,因此類似的值可以共用相同的標準形式。 當浮點值串行化然後重新插入時,其值可能會稍微變更。 在罕見的情況下,這可能會導致在重新插入時違反其類型的下列各個面向的值:列舉minInclusiveminExclusivemaxInclusive、或maxExclusive。 為避免這種情況,SQL Server 會拒絕衍生自 xs:floatxs:double 且無法串行化及重新插入的任何型別值。

另請參閱

伺服器上 XML 結構描述集合的需求與限制