8

ストアド プロシージャ (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:\ドライブにファイルが表示されます...しかし、最初の行だけを残してコメントを戻すと、出力が生成されます。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

17

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

于 2012-08-27T11:20:32.970 に答える