gpt4 book ai didi

c# - SQL Server 生产版的行为与开发版不同。编码有问题!

转载 作者:太空狗 更新时间:2023-10-30 01:26:14 25 4
gpt4 key购买 nike

给定:

一个非常大的 XML 文件,使用 nvarchar(max) 数据类型加载到表中。这导致数据大小加倍(可能是由于 SQL Server 编码为 un​​icode),然后我们从表中读取文件,解析它并向数据库中的其他表执行批量插入。

问题:

在开发服务器上,这工作正常,没有任何问题。但是,在尝试在生产服务器上批量插入时,我收到以下错误:

Exception:System.InvalidOperationException: The given value of type String from the data source cannot be converted to type nvarchar of the specified target column. ---> System.InvalidOperationException: String or binary data would be truncated.

我注意到了一些奇怪的事情:当 ftp-ing 一个 ANSI 版本的 Xml 文件(稍后由网络应用程序读取)时,它会向文件添加几个字节,然后在插入到我们的表中时大小会增加一倍。当 ftp-ing 一个 unicode 版本时,字节保持不变,但它也加倍,然后悲惨地失败

b e c a u s e  t h e  d a t a  s t a r t s  t o  l o o k  l i k e  t h i s.

我们通过将 XML 剥离到根目录下的一条记录来排除不良数据。开发处理了它,生产没有。

我们的开发服务器和生产服务器的配置必须有所不同,但我们无法弄清楚。顺便说一下,排序规则是一样的。

如有任何帮助,我们将不胜感激!

编辑: 更新:我们尝试直接从服务器将文件读入 XmlDocument 对象,并绕过将其存储到数据库的过程。行为没有变化。

第二次更新:我们通过复制文件然后返回来排除了 FTP 进程(也许?)(文件大小缩小了几个字节,但我们在复制回来时得到了那些字节) ).

最佳答案

“截断”警告向我表明,在生产中,该列实际上不是 max - 而是类似于 nvarchar(4000)(旧的最大值在您必须转到 ntext 之前)。

验证该列实际上是 max

作为旁注,如果您只是存储数据,则首选varbinary(max) - 它会避免加倍等。如果您< strong>inspecting 数据,xml 可能是首选。

关于c# - SQL Server 生产版的行为与开发版不同。编码有问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com