sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)でクエリ結果を添付ファイルとして電子メールで送信する方法

    SQL Serverでは、sp_send_dbmailを使用して電子メールを送信できます。 msdbのストアドプロシージャ データベース。

    この手順を実行するときに選択できることの1つは、クエリの結果を含めるかどうかです。

    もう1つの選択肢は、それらの結果を添付ファイルで送信するかどうかです。

    クエリの結果をメールで送信するには、@queryを使用します 引数。

    これらの結果を添付ファイルとして添付するには、@attach_query_result_as_fileを使用します 口論。これはビットを受け入れます 値。デフォルトは0です。 (添付ファイルなし)。

    結果を添付ファイルで送信するには、1を指定するだけです。 この議論のために。

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'Potential candidates for an Admin job, perhaps?',
        @query = 'SELECT TOP(5) * FROM Artists;',
        @execute_query_database = 'Music',
        @attach_query_result_as_file = 1,
        @subject = 'Query results as discussed';

    この例では、結果が .txtとして添付されたメールを送信します ファイル。名前はデータベースメールによって自動的に生成されました。

    デフォルトでは、添付ファイルの最大ファイルサイズはファイルあたり1 MBですが、これはsysmail_configure_spで変更できます。 ストアドプロシージャ。

    添付ファイルの名前を入力してください

    添付ファイルに独自の名前を指定することもできます。これは、@query_attachment_filenameを使用して行うことができます 口論。

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'Potential candidates for an Admin job, perhaps?',
        @query = 'SELECT TOP(5) * FROM Artists;',
        @execute_query_database = 'Music',
        @attach_query_result_as_file = 1,
        @query_attachment_filename = 'Artists.csv',
        @subject = 'Query results as discussed';

    その他のオプション

    前の例を拡張した別の例を次に示します。ここでは、クエリ結果を電子メールの添付ファイルとして送信するときに役立つ可能性のあるいくつかのオプションを含めました。

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'Potential candidates for an Admin job, perhaps?',
        @query = 'SELECT TOP(5) * FROM Artists;',
        @execute_query_database = 'Music',
        @attach_query_result_as_file = 1,
        @query_attachment_filename = 'Artists.csv',
        @query_result_header = 1,
        @query_result_width = 256,
        @query_result_separator = ',',
        @exclude_query_output = 1,
        @append_query_error = 1,
        @query_no_truncate = 0,
        @query_result_no_padding = 1,
        @subject = 'Query results as discussed';

    これらの一部はデフォルト値に設定されており、一部は設定されていません。たとえば、@query_result_no_paddingを変更しました 1へ 列内からパディングを削除するため。 @query_result_separatorも使用しました 区切り文字をデフォルトのスペースからコンマに変更します。

    sp_send_dbmail プロシージャは、ここにリストしたよりも多くの引数を受け入れます。引数とその説明の完全なリストについては、Microsoftのドキュメントを参照してください。

    データベースメールの設定

    このページの例は、データベースメールをすでに有効にして構成していることを前提としています。

    データベースメールが構成されていない場合は、SQLServerから電子メールを送信する方法を参照してください。この記事では、T-SQLを使用してデータベースメールを有効化および構成するための例を示します。


    1. Geekbench3.2を使用した大規模データベースサーバーのテスト

    2. Oracle CloudPlatformでのMySQLデータベースサービスでのOracleJDeveloperの使用、パート3

    3. 世界で最も人気のあるデータベース管理システム

    4. 階層データをコピーするときに親子関係を保持する