首页 > 解决方案 > SQL Server 2019 路径包含空格时找不到文件夹,加上引号不能解决问题

问题描述

我有一个部署到 SQL Server 的包,其平面文件目标包含一个空格,例如:\\SERVER\Cheesy Beans On Toast\

该包使用连接中的表达式将文件名添加到字符串的末尾,因此最终路径为:\\SERVER\Cheesy Beans On Toast\TheFile.txt

我可以直接从 Visual Studio 运行这个包没有问题,但是一旦部署为 SQL Server 2019,并使用服务代理从作业运行它,我在应该创建输出文件的阶段收到以下错误消息:

无法打开数据文件“\\SERVER\Cheesy Beans On Toast\TheFile.txt”。

当我将文件夹重命名为 CheesyBeansOnToast(无空格)并相应地更新环境变量时,同样的工作运行良好。

不幸的是,这个项目的最终目的地将在文件夹包含空格的服务器上,我无权更改它。

我尝试在连接字符串周围添加单引号和双引号,但是无论是在连接字符串表达式还是输入到连接字符串表达式的变量中执行此操作,我都会得到一个不同的错误:

连接中指定的文件名“\\SERVER\Cheesy Beans On Toast\TheFile.txt”无效。

因此,它选择了我的额外引号,而不是帮助处理空格,而是根本无法识别路径是有效的。

关于如何将包部署在 SQL Server 上以与直接从 Visual Studio 运行它的方式相同的方式接受空格,或者如何让 SQL Server 在在其周围添加引号时理解带空格的路径的任何想法似乎没做什么?我很想重命名目标文件夹,但如上所述,这是我无法控制的。

标签: sql-serverssis-2012

解决方案


终于解决了!SQL 代理似乎不仅需要 NTFS 访问权限,还需要共享访问权限。重命名文件夹时,共享访问权限必须已删除。

因为我不是管理员,所以我无法查看有关共享访问的任何内容,我只能看到 NTFS 权限,所以我不知道有任何变化。

管理员打开共享访问权限后,它就可以工作了。


推荐阅读