エラーが発生しました:
文字列型やバイナリは省略されます。ステートメントは終了されました。
XElement
Linq-to-SQL を介して C# からSQL Server 2012Xml
列にデータを挿入すると、エラーが発生していました。
Profiler やその他のツールを実行した後、XML の属性の 1 つがエラーの原因であることがわかりました。
私はC#コードでこれを使用していました:
XmlDocument.SchemaVersion = System.Reflection.Assembly.GetAssembly(typeof(Data.Schema.Document)).GetName().Version.ToString();
これにより、次のような出力が得られるはずです
<tst:Root xmlns:tst="http://tempuri.org/some.xsd" SchemaVersion="0.2.1234.12345" RevNumber="1">
...
...
</tst:Root>
しかし、それはエラーをスローさせていますが、これは:
SchemaVersion="3"
またはSchemaVersion"0.2.123.1"
、次のようにテストすると正常に動作します。
XmlDocument.SchemaVersion = "0.2.123.1"
エラーを強制する SQL Server の XML 列にSchemaCollectionがありません。
SQL Server は何らかの方法でSchemaVersion
属性をユーザー定義なしで特定の長さに強制しますか? または、使用していた C# ステートメントがエラーを引き起こすのはなぜですか?
編集:
手動でテストするときに失敗して機能するサンプル Sql を追加しました
失敗:
Insert into XmlTable(XmlId, XmlColumn)
Values('1', '<tst:Root xmlns:tst="http://tempuri.org/some.xsd" SchemaVersion="0.2.1234.12345" RevisionNumber="1" />')
作品:
Insert into XmlTable(XmlId, XmlColumn)
Values('1', '<tst:Root xmlns:tst="http://tempuri.org/some.xsd" SchemaVersion="0.2.1234.1" RevisionNumber="1" />')