我有一台带有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
答案 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。