我正在创建一个非常简单的存储过程,使用BCP将查询输出导出到文本文件,如下所示。
当我从SQL Management Sudio执行SP时,结果窗格只是位于“执行查询...”它不会返回错误也不会返回。
感谢任何帮助..我已经花了很多时间在这上面。
CREATE procedure spTestShell
WITH EXECUTE AS 'CmdShell'
AS
BEGIN
DECLARE @Command varchar(512)
set @Command = 'bcp "SELECT * FROM DBName.dbo.[ImportFileTable]" queryout "C:\bcptest.txt" -T -c -S' + @@SERVERNAME
print @Command
EXEC xp_cmdshell @Command
END
exec spTestShell
答案 0 :(得分:0)
它“挂起”的事实强烈暗示我正在尝试进程,但无法连接到您的服务器。
我认为您的问题是-S
参数和服务器名称之间没有空格。因此,由于名称无效,它将无法连接到您的服务器。尝试添加空格以查看是否可以修复它,即
set @Command = 'bcp "SELECT * FROM DBName.dbo.[ImportFileTable]" queryout "C:\bcptest.txt" -T -c -S ' + @@SERVERNAME
如果这不起作用,可以将[]括号括在服务器名称周围,因为名称本身可能会导致问题。