如何在SQLServer中获取一个巨大字段的内容?

如何在SQLServer中获取一个巨大字段的内容?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我已经超过了SQL Server 2008,我有一个拥有大量数据的领域。当我申请时 DATALENGTH(field_name) 。。。我知道我的字段长度为288.946个字符,但在MS SQL Server Management Studio上,当我尝试将该字段的简单选择结果复制粘贴到文本编辑器记事本+,SQL Server似乎只包含43.679个字符。。。或者是Windows中复制文本的缓冲区已超出最大字符数?我已经测试过了,限制不是记事本+行大小或其他什么。。。如果我将“粘贴”复制到SQ

我已经超过了SQL Server 2008,我有一个拥有大量数据的领域。当我申请时

DATALENGTH(field_name)
。。。我知道我的字段长度为288.946个字符,但在MS SQL Server Management Studio上,当我尝试将该字段的简单选择结果复制粘贴到文本编辑器记事本+,SQL Server似乎只包含43.679个字符。。。或者是Windows中复制文本的缓冲区已超出最大字符数?我已经测试过了,限制不是记事本+行大小或其他什么。。。如果我将“粘贴”复制到SQL Server中的新查询窗口中,结果是相同的文本字符串,限制为43.679个字符


问题是:我需要复制粘贴该字段的全部内容。。。在我的询问中有什么特别的事情需要我做吗?谢谢。

我在SQL Server 2008的beta版中对此提出了一个bug。他们关闭了它作为固定的,但随后评论说,这是一个重复的Vista问题。这让我很惊讶,因为它也出现在其他几个SSM/操作系统组合中,包括Windows7上的Denali CTP1

所以,我不确定他们为什么称之为固定的,因为它仍然是一个真正的限制

如果小于64K,则可以转换为XML,然后在网格模式下单击结果。不幸的是,除此之外,SSMS能够为您提供的服务非常有限。您需要按照其他人的建议导出到平面文件,使用不同的程序完整地提取数据,或者手动将40000个字符的块粘贴在一起。在您的示例中,您可以执行以下操作:

DECLARE @foo TABLE (a VARCHAR(MAX));

INSERT @foo(a) SELECT REPLICATE('A', 8000);

DECLARE @i INT = 1;

WHILE @i < 36
BEGIN
    UPDATE @foo SET a += REPLICATE(CHAR(@i+64), 8000);
    SET @i += 1;
END

SELECT DATALENGTH(a), a FROM @foo;

SELECT SUBSTRING(a, 1, 40000),
    SUBSTRING(a, 40001, 40000),
    SUBSTRING(a, 80001, 40000),
    SUBSTRING(a, 120001, 40000),
    SUBSTRING(a, 160001, 40000),
    SUBSTRING(a, 200001, 40000),
    SUBSTRING(a, 240001, 40000),
    SUBSTRING(a, 280001, 40000)
FROM @foo;

但是,您必须通过为值>320K的列添加更多操作来进行调整。

如图所示,您可以安装插件来复制文本。如果您将for XML AUTO添加到查询中,并将其与结果一起运行到网格中,您将得到一个包含文本字段全部内容的XML结果

e、 g


然后,您可以复制SSMS中“XML编辑器”窗口的内容,并从您感兴趣的结果周围删除XML。

是否可以尝试将查询结果直接保存到文件中?Aaron,我始终接受能带来解决方案或至少是最佳可用解决方案的答案,你的回答很好,解决了我的问题。非常感谢。我建议你检查一下我的帖子历史,看看我在说什么。有时我发完问题后就不坐在这里了,但我肯定稍后会回来,从论坛用户提供的精彩答案中获益,批准最佳答案,并投票支持所有对我也有帮助的答案。非常感谢您的详细描述!致以最良好的问候。如何:DECLARE@txt varcharmax SET@txt=从tblTest print@txtMagnus中选择TOP 1 someText,您尝试过这个吗?打印有8000个字符的内置限制,因此简单地打印结果是行不通的,原因与简单地选择结果是行不通的差不多。如果列的内容是XML,这是痛苦的。
SELECT large_field FROM MyTable --Limited to 65535 characters in Grid
SELECT large_field FROM MyTable FOR XML AUTO --Limited to 2G characters in Grid in XML format