4

データベースから添付ファイル付きのメール ID にメールを送信する必要があります。

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
                  WHERE DueDate > ''2004-04-30''
                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;

このコードから、結果をtxtファイルに取得しています。しかし、クエリ結果をpdfファイルまたはExcelファイルで取得したい

誰でも知っているということは、私と共有してくださいという意味です。

よろしくお願いします!!! :)

4

3 に答える 3

14

これにより、クエリ結果が csv として添付されます。必要に応じて filename.xls に変更してください。csvの方がうまくいくと思います.Excelでは、ファイルが拡張子で指定されたものとは異なる形式であるという警告が表示される場合があります。

また、クエリ結果の区切り記号に CHAR(9) または TAB を使用しましたが、それを自分に合ったものに変更できます。

また、クエリに SET NOCOUNT ON を追加しました。これがない場合は、Excel ファイルの最後に (1000 行が影響を受けます) (クエリが返す行数に関係なく) が表示されます。

DECLARE
    @tab char(1) = CHAR(9)

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SET NOCOUNT ON 
              SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
              WHERE DueDate > ''2004-04-30''
              AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1,
    @query_attachment_filename='filename.csv',
    @query_result_separator=@tab,
    @query_result_no_padding=1
于 2013-09-24T15:00:48.590 に答える
0

1 つの方法は、拡張ストアド プロシージャ xp_sendmail を使用することです。MAPI プロファイルと SQL Mail が構成されている必要があります。次に、次のように使用できます。

xp_sendmail
@recipients = 'email@domain.com',
@subject = 'Query Results',
@query = 'SELECT fname, lname FROM Employees WHERE empid = 9'

上記の例では、クエリの結果が電子メール メッセージに含まれます。xp_sendmail の追加パラメーターの詳細については、SQL Server Books Online を参照してください。クエリの実行方法 (データベース コンテキスト、データベース ユーザー) と表示方法 (ヘッダー、書式設定、ファイルへのクエリ結果の添付) を制御します。

SQL Mail の構成に関する詳細情報は次のとおりです: http://support.microsoft.com/kb/q263556/

于 2013-11-28T10:34:04.810 に答える
0

添付ファイルを SQL サーバーで作成する必要がある理由はありますか?

クエリ結果はテキストであり、SQL エンジンは PDF や Excel について認識していないため、これは実行できないと思います。XML PATH 属性を使用して、結果を HTML としてスクリプト化できます (このページの下部にある例: http://msdn.microsoft.com/en-us/library/ms190307.aspx )。

同様の方法を使用して xml 文字列を作成し、@query_attachment_filename 変数で .xlsx 拡張子を使用できると思います。Excel 2007+ は基本的に openxml ファイルですが、これがどれほど簡単で実現可能かはわかりません。

于 2012-11-08T13:47:21.960 に答える