SQL Server字段被截断

Mar*_*nio 7 database hibernate sql-server-2008 varcharmax

好的我正在使用SQL Server 2008并且有一个类型的表字段VARCHAR(MAX).问题是当使用保存信息时Hibernate,VARCHAR(MAX)字段的内容会被截断.我在应用服务器或数据库服务器上看不到任何错误消息.

该字段的内容只是一个纯文本文件.此文本文件的大小为383KB.

这是我到目前为止解决此问题所做的工作:

  1. 将数据库字段从VARCHAR(MAX)TEXT 更改为发生同样的问题.

  2. 使用SQL Server Profiler,我注意到
    数据库服务器正在接收全文内容,但由于某些原因,在尝试查看带有截断问题的SQL时,分析器会冻结.就像我说的那样,就在它冻结之前,我
    确实注意到正在接收全文文件内容(383KB),所以它似乎可能是数据库问题.

以前有人遇到过这个问题吗?是什么原因导致这种截断?

注意:只是想提一下我刚刚进入SQL Studio并只是复制TEXT字段内容并将其粘贴到Textpad.这就是我注意到它被截断的方式.

提前致谢.

Aar*_*and 19

您的问题是您认为Management Studio将向您提供所有数据.它没有.转到工具>选项>查询结果> SQL Server.如果您使用"结果到网格",请更改"非XML数据"的"检索到的最大字符数"(请注意,"结果到网格"将消除任何CR/LF).如果您使用结果文本,请更改"每列中显示的最大字符数".

在此输入图像描述

您可能想要输入更多,但您可以在Management Studio中返回的最大值是:

65535 for Results to Grid
8192  for Results to Text
Run Code Online (Sandbox Code Playgroud)

如果您真的想要查看Management Studio中的所有数据,可以尝试将其转换为XML,但这也存在问题.首先将Results To Grid> XML数据设置为5 MB或无限制,然后执行:

SELECT CONVERT(XML, column) FROM dbo.table WHERE...
Run Code Online (Sandbox Code Playgroud)

现在,这将产生一个网格结果,其中链接实际上是可点击的.这将打开一个新的编辑器窗口(它不会是一个查询窗口,因此不会有执行按钮,IntelliSense等),您的数据将转换为XML.这意味着它将替换>>等.这是一个简单的例子:

SELECT CONVERT(XML, 'bob > sally');
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

当您单击网格时,您将看到以下新窗口:

在此输入图像描述

(它确实有智能感知,验证XML格式,这就是你看到波浪形的原因.)

回到RANCH

如果你只是想要进行健全性检查而不想真正想要将所有383K复制到其他地方,那就不要了!只需检查使用:

SELECT DATALENGTH(column) FROM dbo.table WHERE...
Run Code Online (Sandbox Code Playgroud)

这应该表明您的数据是由数据库捕获的,问题是工具和验证方法.

(此后我在这里了一篇关于此的提示.)

  • `SELECT CONVERT(XML,'bob&sally')`失败了`XML解析:第1行,第6个字符,非法名称字符`.您可以使用`SELECT'bob&sally'FOR XML PATH('')`但是这会给`bob& sally`.我更喜欢`SELECT'bob&sally'AS [processing-instruction(x)] FOR XML PATH('')`以避免诱惑. (2认同)

Mah*_*esh 5

尝试使用 SELECT * FROM dbo.table for XML PATH