SQL 服务器无法打开 BCP 主机数据文件

SQL Server Unable to open BCP host data-file

我们最近将所有数据库从 MyServerA 移到了 MyServerB。在 MyServerA 上一切正常,但是当我尝试使用 xp_cmdshell 调用 bcp 命令时,出现以下错误:

Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file

一些信息:

  1. 我很确定我以 MyServerB 身份登录的用户已分配给我尝试 post 的远程服务器位置的权限。我在命令提示符下 运行 a "whoami" 并成功地在安全的情况下添加了它们,并完全控制了远程文件夹(顺便说一句是共享的)。另外,我可以映射到它或访问它。

  2. 有趣的是,当尝试发送一个已经存在的文件时,即从我尝试发送到的同一位置,作为使用 sp_send_dbmail 的附件,我得到了一个 Access denied 消息。所以这似乎是一个安全问题。但请参阅上面的#1。

  3. 我也试过保存在本地的文件夹里MyServerB,但是我也做不到。

示例代码:

DECLARE @bcp varchar(2000);

SET @bcp = 'bcp "SELECT 1" queryout "\MyServerA\Reports\MyFile.txt" -c -T -S MyServerB';

EXEC master..xp_cmdshell @bcp;

运行 来自 xp_cmdshell 的 whoami,我相信它会给你下一步需要做什么的线索。

去找了一位专家朋友。问题是我需要向 SQL 服务器试图从中执行 xp_cmdshell 的服务帐户提供权限。

挑战在于,在查看与 SQL 服务器服务 运行 关联的 "Log On" 帐户时,"Service" 帐户的名称有所不同。它有一个与默认实例名称关联的 NT 帐户。您想要 select 的是名为 "SERVICE".

的帐户

此外,旧机器似乎无需将此帐户添加到该权限即可工作。

无论如何,现在可以了。

感谢您的帮助和关注。