如何为具有 VARBINARY(MAX) 字段的表生成 INSERT 脚本?

2024-01-02

我有一张桌子,上面有VARBINARY(MAX)字段(SQL Server 2008 具有FILESTREAM)

我的要求是,当我部署到生产环境时,我只能向 IT 团队提供一组按特定顺序执行的 SQL 脚本。我在生产中制作的新表有这个VARBINARY(MAX)场地。通常对于新表,我会编写脚本CREATE TABLE脚本。而且,如果我有需要使用的数据,我将编写脚本INSERT脚本。不太复杂。

但与VARBINARY(MAX),我用来生成的存储过程INSERT语句在该表上失败。我尝试选择该字段、打印它、复制它、转换为十六进制等。我遇到的主要问题是它没有选择该字段中的所有数据。我检查一下DATALENGTH([FileColumn])如果源行包含 1,004,382 字节,则再次插入时我可以获取复制或选定的数据的最大值为 8000。所以基本上它是被截断的(即无效的)数据......

我怎样才能做得更好?我疯狂地尝试谷歌搜索,但我一定错过了一些东西。请记住,我无法访问文件系统。这一切都必须有脚本。


如果这是一次性(或很少)要做的事情,您可以尝试从 SSMS 向导中编写数据脚本,如下所述:

http://sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx http://sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx

或者,如果您需要经常执行此操作并希望使其自动化,您可以尝试SQL# https://SQLsharp.com/?ref=so_5630309SQLCLR 库(我编写的,虽然其中大部分是免费的,但您需要的功能不是)。执行此操作的函数是DB_转储数据并且它还产生INSERT声明。

但同样,如果这是一次性或不频繁的任务,请尝试 Management Studio 中内置的数据导出向导。这应该允许您创建可以在生产中运行的 SQL 脚本。我刚刚在桌子上测试了这个VARBINARY(MAX)包含 3,365,964 字节数据的字段,生成脚本向导生成了一个INSERT语句,该字符串包含该值的 673 万个字符的整个十六进制字符串。

UPDATE:
另一种快速简便的方法是,将值转换为XML。首先你会CONVERT the VARBINARY to VARCHAR(MAX)使用可选样式“1”,它为您提供以“0x”开头的十六进制字符串。一旦获得了二进制数据的十六进制字符串,您就可以将其连接成一个INSERT语句和整个事情,当转换为XML,可以包含整个VARBINARY场地。请参见以下示例:

DECLARE @Binary VARBINARY(MAX) = CONVERT(VARBINARY(MAX),
                                         REPLICATE(
                                           CONVERT(NVARCHAR(MAX), 'test string'),
                                           100000)
                                        )

SELECT 'INSERT INTO dbo.TableName (ColumnName) VALUES ('+
       CONVERT(VARCHAR(MAX), @Binary, 1) + ')' AS [Insert]
FOR XML RAW;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为具有 VARBINARY(MAX) 字段的表生成 INSERT 脚本? 的相关文章

  • SQL,帮助进行有关用户年龄的小查询

    我有一个包含注册用户的表 其中我将年份保存为 varchar 值 只是因为我只花了一年 我想创建包含年龄的饼图 以显示哪些用户更有可能注册 下面的查询给出了表中出现超过 5 次的用户年龄计数 以避免结果过小 虽然这些小结果低于 having
  • SQL 解析键值字符串

    我有一个像这样的逗号分隔字符串 key1 value1 key2 value2 key3 value3 key1 value1 1 key2 value2 1 key3 value3 1 我想将它解析成一个如下所示的表 Key1 Key2
  • C# 事务中的事务

    我正在使用 C 将发票的平面文件导入到数据库中 如果遇到问题 我将使用 TransactionScope 回滚整个操作 这是一个棘手的输入文件 因为一行不一定等于一条记录 它还包括链接记录 发票将包含标题行 行项目和总计行 有些发票需要跳过
  • 尝试使用 SQL 身份验证登录失败

    我正在尝试使用 sa 用户名及其密码连接到 SQL Server 2008 在 SQL Server 日志文件中我看到以下错误 用户 sa 登录失败 原因 尝试使用 SQL 登录 认证失败 服务器配置为 Windows 身份验证 仅有的 当
  • SQL Server、ISABOUT、加权项

    我试图弄清楚加权项在 SQL SERVER 的 ISABOUT 查询中是如何工作的 这是我目前所在的位置 每个查询返回以下行 查询 1 权重 1 初始排名 SELECT FROM CONTAINSTABLE documentParts ti
  • 如何从 SQL Server 中的存储过程检索参数列表

    使用 C 和 System Data SqlClient 有没有办法在实际执行 SQL Server 上的存储过程之前检索属于该存储过程的参数列表 我有一个 多环境 场景 其中同一数据库模式有多个版本 环境的示例可能是 开发 暂存 和 生产
  • 在 SQL Server 中选择条件的值[重复]

    这个问题在这里已经有答案了 在查询选择中 我想显示字段是否满足条件的结果 想象一下我有一张名为stock 该表有一列告诉我库存中每种商品的数量 我想做的是这样的 SELECT stock name IF stock quantity lt
  • 如何将 T-SQL 中的结果连接到列中?

    我正在处理一个查询 它应该给我这样的结果 Name Surname Language Date James Hetfield en gb fr 2011 01 01 Lars Ulrich gb fr ca 2011 01 01 但我的选择
  • TSQL - 创建从日期表,同时忽略带条件的中间步骤

    我在 MS SQL 服务器中有以下表结构 现在 我想根据以下规则获取每个 id 的 in 日期 如果第二天 23 59 出 和 00 00 进 则忽略这些 如果同一天有 out 和 in 请忽略这些 例如我应该得到以下结果 id in ou
  • 如何确保使用 Microsoft Sync Framework 同步成功?

    我正在使用微软同步框架 https msdn microsoft com en us sync bb736753 aspx同步两个 Microsoft SQL Server 上的表 我创建了一个测试应用程序 它每秒在远程服务器上的表中生成一
  • 如何使用 SQL Server 查询对“版本号”列进行排序

    我想知道我们当中的 SQL 天才是否可以向我伸出援助之手 我有一个专栏VersionNo在表中Versions包含 版本号 值 例如 VersionNo 1 2 3 1 1 10 3 1 1 4 7 2 etc 我正在寻找对此进行排序 但不
  • 将存储过程的结果加上额外的列插入表中

    如何在其中插入更多列dbFileListOnly表以及 EXEC 查询 INSERT INTO admindb dbfilelistonly path col1 col2 path EXEC RESTORE FILELISTONLY FRO
  • 增量SQL查询

    我的应用程序有一组固定的 SQL 查询 这些查询以轮询模式运行 每 10 秒一次 由于数据库的大小 gt 100 GB 和设计 超级规范化 我遇到了性能问题 每当数据库上发生更改查询结果的 CRUD 事件时 是否可以对给定查询进行增量更改
  • 在 SQL Server 数据库之间传递用户定义的表类型

    我在 SQL Server 的一个数据库中有一个用户定义的表类型 我们称之为DB1 我的类型的定义非常简单 仅包含 2 列 创建我的类型的脚本如下 CREATE TYPE dbo CustomList AS TABLE ID int Dis
  • 如何检查是否启用了更改跟踪

    我试图在运行之前确定我的数据库是否已启用更改跟踪ALTER DATABASE命令来启用它 我试图防止这些脚本多次运行时出现错误 我签到了sys databases and sys dm tran commit table但无法找到我要找的东
  • 如何将特定行保留为查询(T-SQL)的第一个结果?

    我正在编写一个 SQL 查询来获取 Report Builder 3 0 中报表的参数列表 我需要在结果中添加一个带有值 All 的额外行 如下所示 SELECT All UNION SELECT DISTINCT Manager FROM
  • SQL 查询在多用户环境中返回错误值

    一段时间以来 我们在我们的一个客户站点上发现了奇怪的数据完整性问题 经过大量调查后 我们现在已将其隔离为数据库调用 如果两个用户同时调用同一个存储过程 有时一个用户会得到另一个用户的结果 我们设置了一个测试来验证这一点 并且我们有一个循环
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • Visual Studio 2012 - 数据库发布向导已停止?

    我正在使用 VS 2012 和 SQL Server 2008 刚刚注意到服务器资源管理器中缺少 发布到提供商 选项 据此 数据库发布向导已停止使用 http forums asp net post 5122271 aspx http fo
  • SQL 查询Where Column = '' 返回表情符号字符

    好的 我有一个包含三列的表 Id Key Value 我想删除所有行Value是空的 因此 我在删除之前编写了要选择的查询 Select from Imaging ImageTag where Value 到目前为止一切都很标准 现在这是奇

随机推荐