首先,在每个人都对我大喊大叫之前 - 我在遗留代码中修复错误并且现在重新编写代码 - 我必须尝试使用xp_cmdshell命令找到修复程序。
我有一个通过预定作业执行的proc。 proc充满了TSQL,如下所示,将数据转储到日志文件中。
SELECT *
INTO Temp
FROM MyView
SET @cmd1 = 'bcp "SELECT * FROM [myDatabase].dbo.Temp" queryout "C:\temp.txt" -T -c -t" "'
SET @cmd2= 'type "C:\temp.txt" >> "C:\output.txt"'
EXEC master..xp_cmdshell @cmd1
EXEC master..xp_cmdshell @cmd2
DROP TABLE Temp
问题是proc中的最后一个命令似乎没有运行。我可以在text.txt文件中看到结果,但不能看到output.txt文件。所有前面的工作都很好,但是当我在它上面运行它时,它工作正常。
任何人都可以建议为什么会发生这种情况或提出另一种方法来实现这一目标吗?
由于
答案 0 :(得分:0)
我认为,BCP作为外部进程运行异步。所以可能的是,在您尝试复制其内容时,您的文件尚未写入。
copy
而不是type
您可以在其中创建一个仅包含 hello world 的文件c\temp.txt
。在type
之前尝试将BCP
放入一个文件中,然后在BCP
之后将其输入另一个文件。