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

SQL Server(T-SQL)で添付ファイル付きの電子メールを送信する

    SQL Serverは、データベースメールソリューションを介して電子メールを送信する機能を提供します。これには、電子メールの構成と送信を容易にする一連のストアドプロシージャが含まれます。

    メールを送信するには、sp_send_dbmailを使用します ストアドプロシージャ。このプロシージャは、多数のオプションの引数を受け入れます。そのうちの1つを使用すると、添付ファイルを送信できます。

    実際には、添付ファイルを送信できるようにする2つの引数があります。使用するものはコンテキストによって異なります。

    それらは:

    • @file_attachments –メールに添付するファイルを指定できます。
    • @attach_query_result_as_file –これは、@queryも使用している場合にのみ適用されます クエリの結果をメールで送信します。

    以下の例。

    ファイルを添付

    @file_attachments 引数を使用すると、メールに添付するファイルを指定できます。

    次に例を示します:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'The attached file contains all required data.',
        @file_attachments = '/var/opt/mssql/bak/Nature.bak',
        @subject = 'File attached as discussed';

    値には、ファイルへの絶対パスが含まれている必要があります。

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

    複数のファイルを添付する

    各ファイル名をセミコロンで区切ることにより、複数のファイルを添付できます:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'The attached files contain all required data.',
        @file_attachments = '/var/opt/mssql/bak/Nature.bak;/var/opt/mssql/bak/World.bak',
        @subject = 'Files attached as discussed';

    前述のように、ファイルサイズの制限は各ファイルに適用されます。したがって、ファイルサイズの制限が1 MBの場合、この例の各ファイルは最大1 MBになる可能性があります(両方の添付ファイルを合わせた合計サイズは2 MBになります)。

    クエリの結果を添付する

    データベースメールを使用して、クエリの結果を電子メールで送信することもできます。これは@queryで行われます 口論。デフォルトでは、結果はメールの本文に表示されますが、必要に応じて添付ファイルとして追加できます。

    それらを添付ファイルとして追加するには、@attach_query_result_as_fileを設定します 値が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';

    クエリ結果を電子メールで送信するときに利用できるオプションはかなりあります。

    たとえば、@query_attachment_filenameを使用できます ファイル名を指定します(指定されていない場合は、データベースメールがファイル名を構成します)。 @query_result_headerを使用することもできます ヘッダーをクエリに含めるかどうかを指定する引数。@query_result_no_paddingを使用できます。 結果に自動的に適用されるパディングを削除する引数。


    1. トランザクションログ構成の問題

    2. SQL Server(T-SQL)のプロファイルからデータベースメールアカウントを削除する方法

    3. MySQL REPLACE()–サブストリングのすべてのインスタンスを別のストリングに置き換えます

    4. SQL Serverで日付+時刻から日付を取得する最も効率的な方法は?