10

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

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

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

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

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

有没有人遇到过这个问题?任何想法是什么导致这种截断?

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

提前致谢。

4

3 回答 3

24

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

在此处输入图像描述

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

65535 for Results to Grid
8192  for Results to Text

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

SELECT CONVERT(XML, column) FROM dbo.table WHERE...

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

SELECT CONVERT(XML, 'bob > sally');

结果:

在此处输入图像描述

当您单击网格时,您会看到这个新窗口:

在此处输入图像描述

(它确实有 IntelliSense,验证 XML 格式,这就是你看到波浪线的原因。)

回到牧场

如果您只想进行完整性检查并且不想将所有 383K 复制到其他地方,那就不要!只需检查使用:

SELECT DATALENGTH(column) FROM dbo.table WHERE...

这应该表明您的数据已被数据库捕获,问题在于工具和您的验证方法。

(我已经在这里写了一个关于这个的提示。)

于 2012-06-14T20:32:44.597 回答
4

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

于 2014-12-30T04:04:00.693 回答
0

我也有类似的情况。我有一张excel表格。工作表中的几列可能有超过 255 个字符,有时甚至 500 个。一种简单的方法是对数据行进行排序,将具有最多字符的行放在顶部。你实际上只需要一排。当 SQL 导入数据时,它会识别超过 255 个字符的字段并导入整个数据 :)

否则,他们建议使用 regedit 更改特定值。不想那样做。

希望这可以帮助

于 2018-11-06T00:02:30.890 回答