2011-11-15 15 views
2

この質問は多くのテクノロジに及んでいますが、ここでは高レベルの寄稿のみを探しています。SQL ServerからExcelにエクスポートし、SQLエージェントを使用して添付ファイルとして電子メールを送信

私は現在、SQL Server procからExcelにエクスポートしてから、SQLエージェントを使用してExcelファイルを添付ファイルとして電子メールで送信するように指示されています。 SQLエージェントジョブは毎日実行する必要があります。 - >エクセルにxp_cmdshell&bcpを使用して

  • SQLを:私が試してみました何

    。これは問題ありませんが、Excelの出力ではアルファ以外のテキストフィールドが数字に変わります。 (電話番号)

  • SQL OpenRowset。私は64ビットWin7のためにOpenRowsetを使用するJet 4.0プロバイダの欠如を克服することはできません。
  • SSIS。動的なファイル名の苦境を克服した後、SQLからExcelへのデータ型が一致しなかったときに私は立ち往生します。 (一部のUnicodeとUnicode以外の問題)
  • エクスポートプロセスは.NETで記述できますが、SQL Agentに接続する方法はわかりません。あなたは私がどの技術のパスを取る必要があります(私がしなければならないあなたのことを確認多くの午前のように)この自分自身に対処するつもりだった場合

私は、私の最大の問題はあると思いますか?

注:私は、事前にサーバーに

おかげでOfficeをインストールするべきではありませんほぼ確実です。

+0

Excelになるので、豊富なフォーマットか、CSVで十分だろうか?電子メールを送信するためのメカニズムがSQLエージェントである必要がありますか、Excel-Extract-To-Email-Processのスケジュールを設定するために使用できますか? – billinkc

答えて

4

私は間違いなくSSISを使用します。ストアドプロシージャの出力を読み込んでExcelファイルに書き込んだ後、結果のスプレッドシートの電子メールを処理するメールを送信するデータフロータスクがあります。 (データフローのDerived Column変換を使用してUnicodeとUnicodeの混同を解消しました。)

SQL Agentを使用して、SSISパッケージを使用することができました。

+0

ありがとうございました。これは私が取ることを決めたルートです。 SSISは、要件のすべての段階を処理できるツールであるようです。私はDerived Columnを渦巻きにします。 –

+0

共有いただきありがとうございます。行きたい! – SarjanWebDev

0

エクスポートを.netで書き込むことができる場合は、ジョブのステップを設定する際に、ステップオプションの1つが "。operating system(CmdExec)"で、これを.netアプリケーションにポイントすることができます。

7

あなたはあなたに利用可能なサーバ上のSSISを持っていない場合は、パラメータの正しい組み合わせでsp_send_dbmailを使用して添付CSVファイルを電子メールで送信することができます

declare @tab char(1) = CHAR(9) 
exec msdb.dbo.sp_send_dbmail @profile_name='dbProfile', @recipients='[email protected]', @[email protected], @attach_query_result_as_file=1, 
    @query = @sqlQuery, @query_attachment_filename='filename.csv',@[email protected],@query_result_no_padding=1 

パラメータと何彼らはあるの完全なリストここで:sp_send_dbmail (Transact-SQL)

このSQLは、ストアドプロシージャに簡単に追加してジョブとして実行できます。

+0

これは古い返信ですが、@ tab char(1)= CHAR(9)が今日助けてくれたので、すべての結果が単一のセルに表示されていました。 – Flinkman

関連する問題