【发布时间】:2013-10-29 18:50:49
【问题描述】:
我正在尝试将存储过程设置为 SQL Server 代理作业,它给了我以下错误,
无法批量加载,因为无法打开文件“P:\file.csv”。操作系统错误代码 3(无法检索此错误的文本。原因:15105)。 [SQLSTATE 42000](错误 4861)
有趣的是,当我手动执行存储过程时,它工作得很好。
驱动器 P: 是 Windows SQL Server 上通过 Samba Share 从 LINUX 上共享的驱动器,它是通过执行以下命令设置的,
EXEC xp_cmdshell 'net use P:"\lnxusanfsd01\Data" 密码 /user:username /Persistent:Yes'
对此的任何帮助将不胜感激
【问题讨论】:
-
看起来是权限问题。与手动运行相比,SQL Server 代理通常以不同的用户/具有不同的权限运行。如果文件在本地目录中,代理是否工作?代理是否也在运行
net use命令? -
代理没有运行 net use 命令。我没有测试过,因为我没有对 SQL Server 的 RDP 访问权限
-
那么,如果将
net usecmd 添加到代理作业中是否有效?如果没有它,我很确定P:驱动器将仅在您的用户名的 Windows 会话中可用,而不是代理的。 -
我可以添加 net use 命令,但唯一的问题是它会在每次作业运行时尝试映射目录,例如第二次运行时以及尝试分配 P : 再次驱动会报错。我如何得到这个排序?
-
在批量加载后运行
net use /delete P:将其删除
标签: sql-server stored-procedures samba sql-server-agent bulk-load