我的专栏之一已设置为 nvarchar(max)。当我查询该列时,它只返回 256 个字符。我检查了数据的长度,它有超过 7000 个字符。
我怎样才能获得所有角色而不是丢失任何角色?
# select ValidationKey from UserProductAccountProvider
我的专栏之一已设置为 nvarchar(max)。当我查询该列时,它只返回 256 个字符。我检查了数据的长度,它有超过 7000 个字符。
我怎样才能获得所有角色而不是丢失任何角色?
# select ValidationKey from UserProductAccountProvider
在 SSMS 中,选择工具菜单,然后选择选项、查询结果、SQL Server、结果到文本。将“每列中显示的最大字符数”值从 256 更改为您想要的最大 8192。单击“确定”后,将保存设置。在您启动新的查询窗口之前,该设置实际上不会生效。
正如 marc_s 所说,从您的代码中,您将获得全文列。
在 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