Sql server 2008 将大字段(varbinary(max))复制到文件/剪贴板

Sql server 2008 将大字段(varbinary(max))复制到文件/剪贴板,sql-server-2008,tsql,ssms,Sql Server 2008,Tsql,Ssms,我在一个数据库表中有一个VARBINARY(MAX)字段,它包含约35k个字符。此字段是已转换的word文档,不幸的是,它不再具有访问权限 这个字段存在于我的dev数据库中,我希望将这个值移植到一个实时数据库中。然而,如果我纯粹从SQL中的网格结果中选择内容,我似乎只能获得大约28k的可用字符 所以我的问题是,迁移内容太大而无法简单复制粘贴到脚本中并插入脚本的字段的最佳方法是什么 非常感谢您的任何想法 编辑: 作为附加信息,将结果输出到文件(虽然是到.txt)似乎比通过网格给我的字符更少。如果我

我在一个数据库表中有一个VARBINARY(MAX)字段,它包含约35k个字符。此字段是已转换的word文档,不幸的是,它不再具有访问权限

这个字段存在于我的dev数据库中,我希望将这个值移植到一个实时数据库中。然而,如果我纯粹从SQL中的网格结果中选择内容,我似乎只能获得大约28k的可用字符

所以我的问题是,迁移内容太大而无法简单复制粘贴到脚本中并插入脚本的字段的最佳方法是什么

非常感谢您的任何想法

编辑:

作为附加信息,将结果输出到文件(虽然是到.txt)似乎比通过网格给我的字符更少。如果我在运行查询到网格后将查询结果导出到文件中,我似乎得到了查询窗口中内容的文字表示(因此,如果拉伸窗口,我得到的字符数比压缩列宽多)

您可以简单地将结果导出(另存为)到csv

1) 在SSMS中运行查询
2) 结果以网格格式显示
3) 在网格上单击鼠标右键,然后选择“结果另存为”
4) 选择csv或文本文件的格式
5) 将结果保存到文件

这种方式将导出所有数据,从中可以选择所需的所有文本。

注意:这些步骤是使用SSMS 2012完成的,但2008年和其他数据库管理工具应相同或类似

跳过网格
在SSMS中查询结果到文件
运行查询

或者为什么不使用链接服务器直接插入

我测试并保存到文件,但不会截断


能否将.NET与DataReader和.GetBinary一起使用?

要从SSMS查询结果窗格可靠地复制大字符串,请密切注意以下设置(我现在正在查看SSMS 10.50.2500.0):

您可能至少需要打开一个新的查询窗口才能应用设置。请注意,由于XML是无限的,所以您可以潜在地转换为XML以获得完整的结果。在这种情况下,您可以执行以下操作:

select cast(convert(varchar(max), MyColumn, 1) as xml) -- Use style 1 to get "0x..."
综上所述,可能有更好的方法(以及自动化/可复制的方法)在您的系统中移动数据,正如其他人所提到的:

  • 设置只运行insert语句
  • 用于查询远程服务器
  • SSMS:导出数据、生成脚本、结果到文件
  • SSIS
  • 第三方工具(红门数据比较等)

我开发的SSMS的SSMSBoost外接程序有两个功能可以帮助您:

  • 它可以直接从ResultsGrid“可视化”保存在单元格中的文档。因此,您将能够从SSMS中看到word中的文档。链接:

  • 它可以将所有字节从单元格复制到剪贴板。您可以将数据粘贴到一些“好”的文本编辑器中,并将其另存为.doc。但第一种解决方案更好,因为您可以直接获得word文档:


  • 使用
    generate Scripts
    选项生成用于导出数据的脚本?也许您可以使用SSMS导出数据功能…我相信这将简单地将字符串保存为您从查询结果窗格获得的任何数据限制和截断,否?@Tim Lehner,是的,我相信是这样,这是我在尝试将结果保存到文件时看到的,我会尝试一下,我没有明确尝试将查询后的结果保存到网格,只是直接将查询结果输出到文件,结果似乎少于网格,约500个字符。诚然,我将文件保存为.txt,但我的理解是,它至少会输出整个列。由于网络拓扑和相关安全问题,这种情况下不可能使用链接服务器。恐怕我只能通过ftp将文件传输到实时系统:(这似乎不起作用,文件的查询结果也会被截断。然后我会使用带有适当Get的.NET SQLDateReader。对于长XML,我甚至不得不进行多次Get。@SamHolloway你否决了吗?我说“我测试过,保存到文件会截断。”这个答案中还有LinkedServer和DataReader。SSMS设置是一个有趣的选项,有趣的是,我读的是“easy”(更可取!)明天早上我会检查一下。当我只需要从SQL中快速获取一点大文本时,XML选项很容易使用,非常完美。谢谢!是的-SSMS Boost是一个非常好的免费工具,我每天都在使用。例如,如果我不能按F2键写出光标所在的任何数据库对象,我将无法继续生活。(说清楚点,我和它没有任何关系,只是一个快乐的用户)
    select cast(convert(varchar(max), MyColumn, 1) as xml) -- Use style 1 to get "0x..."