2011-01-04 17 views
3

私はExcelにエクスポートしたいTSQLの複雑な動的クエリを持っています。 [それが重要な場合は、結果表には、255文字以上のテキストとフィールドが含まれています]TSQL - xls/xslx/csvにクエリをエクスポート

私はManagement Studioのメニューを使用して結果をエクスポートすることができます知っているが、私は、コードが自動的にそれをやってみたいです。どのようにするか知っていますか?

ありがとうございます。

答えて

2

sp_send_dbmailをご覧ください。これにより、結果セットの添付されたCSVを含む実行後のクエリーから電子メールを送信することができます。明らかに、このメソッドの実行可能性は、結果セットの大きさに依存します。ここ

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'AdventureWorks2008R2 Administrator', 
@recipients = '[email protected]', 
@query = 'SELECT COUNT(*) FROM AdventureWorks2008R2.Production.WorkOrder 
       WHERE DueDate > ''2006-04-30'' 
       AND DATEDIFF(dd, ''2006-04-30'', DueDate) < 2' , 
@subject = 'Work Order Count', 
@attach_query_result_as_file = 1 ; 
+0

ありがとうございます。私はシステムの他の部分でこのオプションを使用していますが、今回は、CSVファイルを出力するシステムが本当に必要です。 –

+0

結果セパレータフィールドを設定することで、このメソッドを通常のcsvとして出力できるはずです。私たちは現在、このシステムを1つのシステムで使用しています。テクニカルではないユーザーには、Excelで開くことができるcsvファイルを電子メールで送信します。実装方法の説明については、http://dbaspot.com/forums/sqlserver-programming/383582-sp_send_dbmail-attachment-issue.htmlを参照してください。そうでなければ、私が戻ってきたときに数日後にあなたに戻ってきますオフィスで私たちの実装を見て – Simon

1

コマンドラインから呼び出すことができるbcpを使用する方法 - そのリファレンスの例をチェックしてください。特に、フィールド終端文字を設定するために使用できる-t引数に関する情報を参照してください(CSV )。 Specifying Field and Row Terminatorsにリンクされた参照があります。

または、直接TSQLを使用して、OPENROWSET as explained here by Pinal Daveを使用することができます。

更新: 再;: 2008年64 - & OPENROWSET - 私はそれに気づいていなかった、迅速な発掘は、与えられたリンクでthis on MSDN forumsをスローします。どんな助け?

これ以外にも、SSISパッケージを作成するか、SQL CLRを使用して.NETからエクスポートプロシージャを作成してSQLから直接呼び出すことができます。または、 xp_cmdshell経由でTSQLからbcpを呼び出すことができます - 有効にする必要がありますが、SQL Serverの "攻撃面"を開く可能性があります。私はthis discussionをチェックアウトすることをお勧めします。

+0

ありがとうございました。私はTSQLを使用して直接それを行うことを好む。問題は、Pinalの方法がSQL Server 2008 64bitで動作しないということです。 –

+0

だから、もし私がそれを真っ直ぐにしたら、ボタンラインはそれには解決策がない、と思う。面白いのは、メニューを使用して素晴らしいCSVファイルを作成できたことです。方法があるはずです。 –

+0

@Or Shachar - 私はあなたがUIを介してそれを行うとき、それはちょうどBCPを呼んでいると確信しています。上記のように、xp_cmdshellを使ってBCPから行うことができます。 – AdaTheDev

0

私は、Webアプリケーションを通してそれをダウンロードできるように動的問合せを受け入れ、ディスクに結果を保存するために必要なリンクされたドキュメントから

例。

データソースへの挿入は、動作させるための継続的な努力のためにうまくいかなかった。

は最終的に私はここ How do I create a document on the server by running an existing storedprocedure or the sql statement of that procedure on a R2008 sql server

単一引用符が問題だった私の記事を読む SSMSからPowerShellのためにクエリを送信して行き、最初に私は私のクエリをトリミングしていなかったし、それので、1行にそれを書きます実際に重要なSQL Studioに改行がありました。

関連する問題