如何为具有 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 脚本? 的相关文章

  • 是什么阻止“Select top 1 * from TableName with (nolock)”返回结果?

    我目前正在运行以下语句 select into adhoc san savedi from dps san savedi record 这花了很长时间 我想看看它走了多远 所以我运行了这个 select count from adhoc s
  • Id 或 [TableName]Id 作为主键/实体标识符

    是否首选使用 Id 作为主键的列名或 TableName Id 作为命名约定 表 账户主键 ID 相对 表 账户主键 AccountId 在我见过的实现中 它似乎分为 50 50 左右 每种方法的优点和缺点是什么 跟进 在我的数据库中使用一
  • 使用 Python 中的 SQL Server 存储过程 (pyodbc)

    我有一个存储过程 代码 DECLARE RC int DECLARE id varchar 13 DECLARE pw varchar 13 DECLARE depart varchar 32 DECLARE class varchar 1
  • 设置 xact_abort 并尝试一起捕获

    我的 sp 中有一个 try catch 块 其中只有一条插入语句 catch 检查错误代码是否违反 pk 如果是则进行更新 但有时我得到 当前事务无法提交 并且无法支持写入日志文件的操作 回滚事务 在批处理结束时检测到不可提交的事务 事务
  • 恢复 SQL Server 数据库 - 主密钥未打开

    我必须制作远程 SQL Server 数据库的本地副本 我通过使用 Management Studio 中的 任务 gt 备份 来完成此操作 然后 我在本地恢复了备份 该备份似乎包含了所有内容 表 用户 对称密钥和证书 当我尝试执行需要打开
  • T-SQL:如何使用 SELECT 创建表?

    在 oracle 中 您可以发出 create table foo as select from bar 等效的 T SQL 语句是什么 您可以使用SELECT INTO http msdn microsoft com en us libr
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • 如何让 LinqToSql 将“索引提示”传递给 sql server?

    由于我们不能相信我们的客户会更新 sql server 中的索引统计信息等 因此我们过去不得不使用索引提示 http www sql server performance com tips hints general p1 aspx 由于我
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • 计算运行总计时出错(之前期间的累计)

    我有一张桌子 我们称之为My Table有一个Created日期时间列 在 SQL Server 中 我试图提取一个报告 该报告显示历史上有多少行My Table按月在特定时间 现在我知道我可以显示有多少added每个月 SELECT YE
  • C#的数组列表可以用来填充SSIS对象变量吗?

    我已在 C 脚本中填充了一个列表 并将其值分配给 SSIS 对象变量 然后 我使用该对象变量通过循环遍历 For every do 枚举器来执行一些 SQL 查询 我尝试通过 Foreach ado 枚举器执行此操作 但出现错误 X 变量不
  • 如何在NiFi中映射流文件中的列数据?

    我有 csv 文件 其结构如下 Alfreds Centro Ernst Island Bacchus Germany Mexico Austria UK Canada 01 02 03 04 05 现在我必须将这些数据移入数据库 如下所示
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

    也CHAR CHARACTER and VARCHAR CHARACTER VARYING SQL 提供了NCHAR NATIONAL CHARACTER and NVARCHAR NATIONAL CHARACTER VARYING 类型
  • VB6+SQL-Server:如何使用 ADODB.Command 执行带有命名参数的查询?

    我一直在尝试使用 ADODB Command 执行参数化查询 我知道我可以使用 对于参数 但我的查询相当大 我真的不想跟踪参数的确切顺序 我尝试了类似以下的操作 objCmd CommandType adCmdText objCmd Com

随机推荐