アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLServer2005のストアドプロシジャーにて、
クエリの結果をファイルに出力したいのですが、
どのようにすればよろしいでしょうか?

xp_cmdshellでSQLCMDを呼び出す以外に方法はありますか?

A 回答 (1件)

xp_cmdshellでSQLCMDを使いたくないということは、


xp_cmdshell経由で、bcpを使いたくないということでしょうか?

■一括インポート操作とエクスポート操作
http://msdn2.microsoft.com/ja-jp/library/ms18704 …

■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ユーティリティ を利用することを強くお勧めします。

参考URL:http://msdn2.microsoft.com/ja-jp/library/ms18704 …
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す