web-dev-qa-db-ja.com

bcpユーティリティを使用してSQLクエリをテキストファイルにエクスポートする

ストアドプロシージャ(SQL Server 2005)をデバッグし、データテーブルのいくつかの値を見つける必要があります。

手順はアプリケーションのイベントによって実行され、デバッグ出力だけを監視します。

次のストアドプロシージャ(SQL Server 2005)を実行し、システムテーブル(master.dbo.spt_values)を例に取りました。

set @logtext = 'select name, type from master.dbo.spt_values where number=6'
--set @logtext = 'master.dbo.spt_values'
SET @cmd = 'bcp ' + @logtext + ' out "c:\spt_values.dat" -U uId -P uPass -c'
EXEC master..XP_CMDSHELL @cmd 

したがって、すべてが機能するように2番目のコメントを解除すると、C:\ドライブにファイルが表示されます...しかし、最初の行だけをコメントに戻すと、出力が生成されます。

この問題を解決する方法は?

8
serhio

bcp outテーブルをエクスポートします。

クエリをエクスポートするには、代わりにqueryoutを使用します-クエリを「二重引用符」で囲む必要があります

set @logtext = '"select name, type from master.dbo.spt_values where number=6"' 
--set @logtext = 'master.dbo.spt_values' 
SET @cmd = 'bcp ' + @logtext + ' queryout "c:\spt_values.dat" -U uId -P uPass -c' 
EXEC master..XP_CMDSHELL @cmd  

http://msdn.Microsoft.com/en-us/library/ms162802.aspx

17
podiluska