我们最近将所有数据库从MyServerA
移动到MyServerB
。一切都在MyServerA
上正常工作,但是当我尝试使用xp_cmdshell
调用bcp
命令时,我会收到以下错误:
Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file
一些信息:
我很确定要登录的用户,因为在
MyServerB
下,将权利分配给了我要发布的远程服务器位置。我在命令提示符下运行了一个" whoami",并在安全文件夹上完全控制了安全性(BTW共享)。另外,我可以映射到它或访问它。有趣的是,当尝试发送已经存在的文件时,这是我试图发送到的位置,作为使用
sp_send_dbmail
IN的附件,我收到了Access denied
消息。因此,这似乎是一个安全问题。但是请参阅上面的#1。我还尝试将其保存在本地
MyServerB
上的文件夹中,但我不能这样做。
示例代码:
DECLARE @bcp varchar(2000);
SET @bcp = 'bcp "SELECT 1" queryout "\MyServerAReportsMyFile.txt" -c -T -S MyServerB';
EXEC master..xp_cmdshell @bcp;
去找一个专家的朋友。问题是我需要为SQL Server试图执行XP_CMDSHELL的SERIVCE帐户提供权限。
挑战是"服务"帐户在查看与运行SQL Server服务相关的"登录"帐户时被命名为不同的。它具有与默认实例名称关联的NT帐户。您想选择的是名为"服务"的帐户。
此外,旧机器似乎无需将此帐户添加到该许可即可。
无论如何,它现在起作用。
感谢您的帮助和兴趣。
从xp_cmdshell运行whoami,我相信这会给您一个线索下一步需要做什么。