1

我的专栏之一已设置为 nvarchar(max)。当我查询该列时,它只返回 256 个字符。我检查了数据的长度,它有超过 7000 个字符。

我怎样才能获得所有角色而不是丢失任何角色?

# select ValidationKey from UserProductAccountProvider 
4

2 回答 2

2

在 SSMS 中,选择工具菜单,然后选择选项、查询结果、SQL Server、结果到文本。将“每列中显示的最大字符数”值从 ​​256 更改为您想要的最大 8192。单击“确定”后,将保存设置。在您启动新的查询窗口之前,该设置实际上不会生效。

正如 marc_s 所说,从您的代码中,您将获得全文列。

于 2012-06-25T18:38:20.213 回答
1

在 David 指出的 UI 设置旁边,还有两个设置会影响返回的数据量。

2:选择Tools菜单,然后Options,Query Results,SQL Server,Result to Grid。更改值“非 XML 数据”。该值告诉您网格中有多少字符可用。您可以通过副本获得它们。看起来默认限制大于剪贴板的限制(我最多得到 43kB 字符)。

3:studio中有设置限制返回数据量。它是每个会话。它可以通过工具菜单找到,然后是选项,查询执行。更改“SET TEXTSIZE”的值。可以验证和更改 SQL 批处理中的值:

SELECT @@textsize;

您可以将其设置为例如 100kB:

SET textsize 102400;

通常 UI 设置较低,约为 256,但有更多数据可用。

这三个设置都会影响您看到(或获得)的内容。

当您真的想检查非常大的结果集时,您可以在消息窗口中打印结果:

DECLARE @s AS NVARCHAR(max);
DECLARE @LineLength AS int = 4000;
-- you might need a cursor when you have many rows;
SELECT TOP 1 @s = large_text FROM ....
WHILE LEN(@s) > @LineLength  BEGIN
    print SUBSTRING(@s,1, @LineLength);
    SET @s = SUBSTRING(@s,@LineLength, LEN(@s));
END
于 2012-12-10T13:33:23.227 回答