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
一些信息:
我很确定我以 MyServerB
身份登录的用户已分配给我尝试 post 的远程服务器位置的权限。我在命令提示符下 运行 a "whoami" 并成功地在安全的情况下添加了它们,并完全控制了远程文件夹(顺便说一句是共享的)。另外,我可以映射到它或访问它。
有趣的是,当尝试发送一个已经存在的文件时,即从我尝试发送到的同一位置,作为使用 sp_send_dbmail
的附件,我得到了一个 Access denied
消息。所以这似乎是一个安全问题。但请参阅上面的#1。
我也试过保存在本地的文件夹里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".
的帐户
此外,旧机器似乎无需将此帐户添加到该权限即可工作。
无论如何,现在可以了。
感谢您的帮助和关注。
我们最近将所有数据库从 MyServerA
移到了 MyServerB
。在 MyServerA
上一切正常,但是当我尝试使用 xp_cmdshell
调用 bcp
命令时,出现以下错误:
Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file
一些信息:
我很确定我以
MyServerB
身份登录的用户已分配给我尝试 post 的远程服务器位置的权限。我在命令提示符下 运行 a "whoami" 并成功地在安全的情况下添加了它们,并完全控制了远程文件夹(顺便说一句是共享的)。另外,我可以映射到它或访问它。有趣的是,当尝试发送一个已经存在的文件时,即从我尝试发送到的同一位置,作为使用
sp_send_dbmail
的附件,我得到了一个Access denied
消息。所以这似乎是一个安全问题。但请参阅上面的#1。我也试过保存在本地的文件夹里
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".
的帐户此外,旧机器似乎无需将此帐户添加到该权限即可工作。
无论如何,现在可以了。
感谢您的帮助和关注。