4

「createxmlschemacollection」ステートメントを使用してサードパーティのXSDスキームをSQLServer2008にロードしようとしています

「xs:decimal」に基づく複合型があり、制限があります。

        <xs:totalDigits value="31"/>
        <xs:fractionDigits value="14"/>

XSD内。

そしてSQLServerはエラーを返します

Msg 6960, Level 16, State 2, Line 2
Component 'NAME' is outside of allowed range. Maximum for 'fractionDigits' is 10 and maximum number of digits for non fractional part is 28

ただし、「numeric(31,14)」型の変数を作成することはできます。

w3cのドキュメントにもMSDNにも制限は見つかりませんでした。この制限に関するいくつかのドキュメントを教えてください。いくつかのサービスパックまたは設定で修正できるかもしれません。

SQL Serverのバージョン:Microsoft SQL Server 2008(SP3)-10.0.5500.0(X64)2011年9月21日22:45:45 Copyright(c)1988-2008 Microsoft Corporation Enterprise Edition(64-bit)on Windows NT 6.1(Build 7601:サービスパック1)


MSDNで回答を見つけました(http://msdn.microsoft.com/en-us/library/ms190665(v=sql.100).aspx

SQL Serverは、可変精度の小数をサポートしていません。xs:decimal型は、任意精度の10進数を表します。最低限準拠しているXMLプロセッサは、totalDigits=18以上の10進数をサポートしている必要があります。SQLServerはtotalDigits=38をサポートしますが、小数桁を10に制限します。すべてのxs:decimalインスタンス化された値は、SQLタイプnumeric(38、10)を使用してサーバーによって内部的に表されます。

xs:decimalを数値タイプではなく10進数にマップします

4

1 に答える 1

2

MSDN で回答を見つけました ( http://msdn.microsoft.com/en-us/library/ms190665(v=sql.100).aspx )

SQL Server は、可変精度の 10 進数をサポートしていません。xs:decimal 型は、任意精度の 10 進数を表します。最低限適合する XML プロセッサは、totalDigits=18 以上の 10 進数をサポートする必要があります。SQL Server は totalDigits=38 をサポートしていますが、小数点以下の桁数を 10 に制限しています。すべての xs:decimal インスタンス化された値は、SQL 型の数値 (38, 10) を使用して、サーバーによって内部的に表されます。

xs:decimal を数値型ではなく10 進数にマップします

于 2012-11-06T04:52:02.217 に答える