好的我正在使用SQL Server 2008并且有一个类型为VARCHAR(MAX)
的表字段。问题是,使用Hibernate
保存信息时,VARCHAR(MAX)
字段的内容会被截断。我在应用服务器或数据库服务器上看不到任何错误消息。
此字段的内容只是一个纯文本文件。该文本文件的大小为383KB。
到目前为止,我已经完成了解决此问题的工作:
将数据库字段从VARCHAR(MAX)
更改为TEXT并且相同
问题发生了。
使用SQL Server Profiler,我注意到了全文 内容正在 由数据库服务器接收,但由于某种原因,探查器在尝试时冻结 查看具有截断问题的SQL。就像我说的那样,就在冻结之前,我 确实注意到正在接收全文文件内容(383KB),所以看来 它可能是数据库问题。
以前有人遇到过这个问题吗?是什么原因导致这种截断?
注意:只是想提一下我刚刚进入SQL Studio并只是复制TEXT字段内容并将其粘贴到Textpad。这就是我注意到它被截断的原因。
提前致谢。
答案 0 :(得分:18)
您的问题是您认为Management Studio将向您提供所有数据。它没有。转到工具>选项>查询结果> SQL Server。如果您使用“结果到网格”,请更改“非XML数据”的“检索的最大字符数”(请注意,“结果到网格”将消除任何CR / LF)。如果您使用结果文本,请更改“每列中显示的最大字符数。”
您可能想要输入更多内容,但您可以在Management Studio中返回的最大值是:
65535 for Results to Grid
8192 for Results to Text
如果您确实想要查看Management Studio中的所有数据,可以尝试将其转换为XML,但这也存在问题。首先设置结果到网格> XML数据为5 MB或无限制,然后执行:
SELECT CONVERT(XML, column) FROM dbo.table WHERE...
现在这将产生一个网格结果,其中链接实际上是可点击的。这将打开一个新的编辑器窗口(它不会是一个查询窗口,因此不会有执行按钮,IntelliSense等),您的数据将转换为XML。这意味着它会将>
替换为>
等。以下是一个简单示例:
SELECT CONVERT(XML, 'bob > sally');
结果:
当您点击网格时,您会看到以下新窗口:
(它确实有智能感知,验证XML格式,这就是你看到波浪形的原因。)
回到RANCH
如果您只是想进行健全性检查,并且不想将所有383K复制到其他地方,那就不要了!只需使用:
进行检查SELECT DATALENGTH(column) FROM dbo.table WHERE...
这应该表明您的数据是由数据库捕获的,问题是工具和您的验证方法。
(我已经写了a tip about this here。)
答案 1 :(得分:2)
尝试使用SELECT * FROM dbo.table for XML PATH
答案 2 :(得分:0)
我也有类似的情况。我有一张Excel工作表。工作表中的几列可能超过255个字符,有时甚至超过500个字符。一种简单的方法是对数据行进行排序,将字符最多的行放在顶部。您实际上只需要一行。 SQL导入数据时,它将识别出超过255个字符的字段,并导入整个数据:)
否则,他们建议使用regedit更改特定值。不想这样做。
希望这会有所帮助