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

标签 sql-server-2008 tsql ssms

我在数据库表中有一个 VARBINARY(MAX) 字段,其中包含约 35k 个字符。该字段是一个转换后的 word 文档,遗憾的是无法再访问。

该字段存在于我的开发数据库中,我希望将此值移植到实时数据库中。但是,如果我纯粹从 SQL 中的网格结果中选择内容,我似乎只能获得约 28k 的可用字符。

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

任何想法都非常感谢。

编辑:

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

最佳答案

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

Tools > Options > Query Results > SQL Server > Results to Grid
    Max chars retreived:
        Non-XML: 65535
        XML: Unlimited

Tools > Options > Query Results > SQL Server > Results to Text
    Max chars displayed:    
        8192

您可能至少需要打开一个新的查询窗 Eloquent 能应用设置。请注意,由于 XML 是无限的,您可以潜在地转换为 XML 以获得完整的结果。在这种情况下,您可以执行以下操作:
select cast(convert(varchar(max), MyColumn, 1) as xml) -- Use style 1 to get "0x..."

总而言之,正如其他人所提到的,可能有更好的(和可自动化/可重现的)方法来在您的系统中移动数据:
  • 设置 linked server只需运行插入语句
  • 使用openrowset查询远程服务器
  • SSMS:导出数据、生成脚本、结果到文件
  • SSIS
  • 第三方工具(Redgate 数据比较等)
  • 关于sql-server-2008 - 将大字段 (varbinary(max)) 复制到文件/剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880324/

    相关文章:

    SQL Server Integration Services 2008-2005兼容性

    sql - 无法连接到 (LocalDB)\MSSQLLocalDB -> 用户 'User-PC\User' 登录失败

    sql-server - 获取 sql 作业代理作业的最后修改用户

    sql-server-2008 - 确定数据库类型

    SQL Server 日期格式 MM/DD/YYYY

    sql - 删除重复行

    sql-server - 禁用数据库用户而不是 SQL Server 2008 中的登录名

    sql - 使用 'GO' 、事务和分号

    sql - 连接具有不同前缀和名称的列

    sql-server - INSERT INTO SELECT 使用 UNION 的奇怪顺序