从远程计算机执行BCP

时间:2019-06-04 16:04:24

标签: sql sql-server bcp

我有一台带有sql数据库和Manager Studio的服务器,另一台是我要从中执行bcp命令的服务器。我可以使用(可能是.bat文件)在同一服务器上生成.txt文件吗?还是有人有其他建议?它适用于不了解BD并想随时执行的人,因此我不使用预定的工作。

我尝试了以下操作,它在第二台服务器上不起作用,但在第一台服务器上显示了预期的结果。

DECLARE @SQL VARCHAR(255), @bcpc VARCHAR(8000)
SET @SQL = 'select * from BaseDatos.dbo.tabla'

SET @bcpc = 'bcp "' + @SQL + '" queryout'
SET @bcpc = @bcpc + ' c:\test\archivo.txt -c -t"|" -Usa -P'
EXEC master..xp_cmdshell @bcpc

print @bcpc

2 个答案:

答案 0 :(得分:0)

怎么样

EXECUTE (master.xp_cmdshell@bcpc) AT server2

如果没有结果:

1)服务器2上的Basedatos.dbo.tabla是吗?如果没有,请创建一个链接服务器,以便您可以引用server1.basedatos.dbo.tabla,以便在服务器2上运行的BCP从服务器1获取数据。

2)检查服务器2上的所有权限。

答案 1 :(得分:0)

您正在构建的bcp命令不包含-S选项来指定从哪个SQL Server获取数据。我相信,如果它在您的“服务器A”上运行,这是因为BCP必须默认为本地默认实例。但是,当您尝试在“服务器B”上运行BCP命令时,您将不再具有相同的默认SQL Server实例(如果有的话)。尝试在BCP命令中添加-S选项以指定“服务器A”的名称。

如果不使用-S,则应再次检查“默认”服务器值。

是的...

  

-S server_name [\ instance_name]指定要连接的SQL Server实例。如果未指定服务器,则使用bcp实用程序   连接到本地计算机上SQL Server的默认实例。   从远程运行bcp命令时,此选项为必需   网络上的计算机或本地命名实例。连接到   服务器上SQL Server的默认实例,仅指定server_name。   若要连接到SQL Server的命名实例,请指定   server_name \ instance_name。