bcp queryout 不保存到本地

bcp queryout not saving to local

查询

EXEC xp_cmdshell 'bcp "select * from DEV.DBO.visit" queryout "c:\users\visit.txt" -c -T'

以上工作正常并在远程服务器上保存输出; 我在这里要做的是将它保存在我的机器上 我从

开始 SQL

亚历克斯

我最近遇到了这个问题。 queryout 的结果写入数据库服务器。解决此问题的一种方法是使用 ftp 将生成的文件从(远程)服务器传输到本地计算机。

您也可以要求 DBA 提供权限,以便 SSMS 客户端可以写入您的本地计算机。

当您 运行 xp_cmdshell 时,您实际上是在 运行 在 SQL 服务器 上执行命令 : C:盘是SQL服务器的硬盘。要将输出保存到您的计算机,您的计算机必须具有对 SQL 服务器可见的网络共享。然后你可以运行这样的命令:

EXEC xp_cmdshell 'bcp "select * from DEV.DBO.visit"
  queryout "\my-computer\my-share\users\visit.txt" -c -T'

但是,由于该命令是 运行ning 在 SQL 服务器的凭据下,该共享也必须可由 SQL 服务器帐户写入。这可能不是。

更大的问题是,为什么你在服务器上 运行ning bcp 而不是 运行ning bcp本地?

打开命令 shell,然后说:

bcp "select * from dev.dbo.visit"
  queryout c:\my-bcp-output-data.txt
  -S some-sql-server-instance
  -T