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

使用OPENROWSET批量插入Filestream文件遇错误码50请求不支持求助

问题原因与解决方案

核心原因

你遇到的错误是因为Filestream的共享路径并非标准Windows文件共享,它是SQL Server专属管理的特殊共享,操作系统层面不支持OPENROWSET(BULK)这类直接访问文件系统的操作去读取该路径下的文件,所以会抛出"请求不支持"的错误。

可行解决方案

方案1:直接从Filestream表读取数据(推荐)

既然文件已经存储在Filestream容器中,不需要绕路用OPENROWSET,直接通过SQL查询读取Filestream列的内容即可插入到目标表。假设你的Filestream存储表名为tblFilestreamStore,包含FileName(存储文件名)和FileStreamData(Filestream类型列),可以用以下语句:

INSERT INTO tblXmlFiles(IdTache, idSuiviTrt, XMLFileName, XMLData)
SELECT 0, 0, FileName, CONVERT(XML, FileStreamData)
FROM tblFilestreamStore
WHERE FileName = 'Test1.xml';

方案2:复制文件到普通路径后再导入

如果必须使用OPENROWSET,可以先把Filestream路径下的文件复制到本地临时目录或者普通Windows共享路径,再执行导入操作:

  1. 复制文件(使用xp_cmdshell,需要先启用该功能):
-- 先启用xp_cmdshell(如果未启用)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- 复制Filestream文件到本地临时路径
EXEC xp_cmdshell 'COPY "\\OMEGA\XMLFiles\XMLFiles\XMLFiles\Test1.xml" "C:\SQLTemp\Test1.xml"';
  1. 执行原导入语句指向临时文件:
INSERT INTO tblXmlFiles(IdTache, idSuiviTrt, XMLFileName, XMLData)
SELECT 0, 0, '\OMEGA\XMLFiles\XMLFiles\XMLFiles\Test1.xml', CONVERT(XML, BulkColumn)
FROM OPENROWSET(BULK 'C:\SQLTemp\Test1.xml', SINGLE_BLOB) AS x;
  1. 清理临时文件:
EXEC xp_cmdshell 'DEL "C:\SQLTemp\Test1.xml"';

关于权限的补充说明

Filestream的权限完全由SQL Server控制,不存在Windows共享权限设置选项,所以你找不到权限选项卡是正常的。要访问Filestream数据,只需确保执行查询的SQL账号拥有对应Filestream表的SELECT权限即可,无需设置Windows层面的共享权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:15:34