You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中提取哈希存储的附件并保存为本地文件

SQL Server 按需提取二进制附件的简单方法

你提到的「hash存储」实际是SaaS厂商把文件内容以二进制格式(SQL Server中通常为varbinary(max)类型)存储在表字段中,以下两种方法都可以实现单条记录对应文件的提取,操作难度都很低:

方法1:SSMS 图形界面导出(无需额外配置,推荐新手使用)

  • 第一步:运行查询定位到你需要的单条记录,示例查询语句如下,替换成你自己的表名、字段名和筛选条件即可:
-- 替换字段、表名、筛选条件为你实际的内容
SELECT 存储文件二进制内容的字段名 FROM 你的表名 WHERE 唯一标识字段 = 目标记录ID
  • 第二步:在查询结果的二进制内容单元格上右键,选择「将结果另存为」,选择本地保存路径,先随便输入一个临时文件名保存
  • 第三步:找到保存好的临时文件,手动修改为对应的正确扩展名即可正常打开

注意:如果表中有存储原始文件名/扩展名的字段,提取前可以先查出来对应上,避免扩展名错误导致文件打不开

方法2:BCP 命令导出(兼容性更高,不会出现界面导出的格式异常)

如果方法1导出的文件无法正常打开,可以用系统自带的BCP命令导出,操作步骤如下:

  • 第一步:先开启SQL Server的xp_cmdshell权限(本地自用数据库无安全风险,用完可以关闭),运行以下SQL:
-- 开启高级选项
sp_configure 'show advanced options', 1;
RECONFIGURE;
-- 启用xp_cmdshell
sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
  • 第二步:运行导出命令,替换对应参数即可:
EXEC xp_cmdshell 'bcp "SELECT 存储文件二进制内容的字段名 FROM 你的库名.dbo.你的表名 WHERE 唯一标识字段 = 目标记录ID" queryout "C:\保存路径\临时文件名" -S 你的SQL实例名 -T -c'

参数说明:

  • -T 表示用当前Windows账号身份验证登录,如果你用SQL账号登录,替换为-U 你的用户名 -P 你的密码
  • 导出完成后同样手动修改文件扩展名即可正常使用
  • 第三步(可选):用完关闭xp_cmdshell降低安全风险:
sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
sp_configure 'show advanced options', 0;
RECONFIGURE;

内容的提问来源于stack exchange,提问作者Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:45:03