質問 |
||
| QNo.3658264 | SQLServer2005 クエリ結果のファイル出力について | |
|---|---|---|
| 質問者:ankomaki |
SQLServer2005のストアドプロシジャーにて、 クエリの結果をファイルに出力したいのですが、 どのようにすればよろしいでしょうか? xp_cmdshellでSQLCMDを呼び出す以外に方法はありますか? |
|
困り度:
|
||
| 質問投稿日時: 08/01/07 16:42 |
||
回答 |
|
| ANo.1 | xp_cmdshellでSQLCMDを使いたくないということは、 xp_cmdshell経由で、bcpを使いたくないということでしょうか? ■一括インポート操作とエクスポート操作 http://msdn2.microsoft.com/ja-jp/library/ms187042.aspx ■BCPを使った例 DECLARE @filePath nvarchar(max) DECLARE @bcpCmd varchar(max) SET @filePath = 'c:\aaa.txt' SET @bcpCmd = 'bcp "SELECT * FROM TABLE" queryout "' SET @bcpCmd = @bcpCmd + @filePath + '" -U username -P pw -password' EXEC master..xp_cmdshell @bcpCmd また、上記のようなxp_cmdshell経由でBCPも使えないとか、制限があるのであれば、OPENROWSETを使えばできないことはないです。 (ただ、いろいろとテキストファイル側の項目定義フォーマットが 別で必要なので、下記だけでは動かないです。 とりあえず、こんな感じですということで掲載します) INSERT INTO OPENROWSET('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=C:\;','select * from aaa.txt') SELECT * FROM テーブル を使った、ファイル生成もありますが、 デフォルトのSQL Serverのセキュリティ設定(Ad Hoc Distributed Queries)が有効になっていないと、使えなかったと 記憶してます。 ■セキュリティ「Ad Hoc Distributed Queries」を有効にする方法。 EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1; GO RECONFIGURE; GO これで、OPENROWSETを使ってテキストファイルに吐けるようには なるはずですが、いずれにしても、OPENROWSETを使って書き出すのは、 セキュリティ上、お勧めしかねるのと、サーバーの設定を 変えるメリットがないため、素直にxp_cmdshellか bcpユーティリティ を利用することを強くお勧めします。 |
|---|---|
| 回答者:kero_mio | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/01/09 12:38 |
|
| |
| 参考URL: | http://msdn2.microsoft.com/ja-jp/library/ms187042.aspx |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |