我收到错误:
字符串或二进制数据将被截断。该语句已终止。
通过 Linq-to-SQL 从 C# 将数据插入 SQL Server 2012 列会导致错误XElement
。Xml
运行 Profiler 和其他工具后,我发现 XML 中的属性之一导致了错误:
我在 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" />')