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

SQL Server(T-SQL)でデータベースメールを有効にする

    SQL Serverには、データベースサーバーからメールを送信するために使用できるデータベースメールオプションがあります。

    たとえば、SQL Serverエージェントジョブの実行が終了または失敗したとき、または重大度の高いエラーが発生したときなどに通知を受け取ることができます。

    データベースメールが設定されていない場合

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

    次に例を示します:

    EXEC msdb.dbo.sp_send_dbmail  
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'Your favorite SQL Server Agent job just failed',  
        @subject = 'SQL Server Agent Job: FAILED';

    ただし、これはSQLServerがメールを送信するように構成されていることを前提としています。

    SQL Serverからメールを送信しようとしても、次のようなエラーが発生した場合は、現在データベースメールが有効になっていないことを意味します。

    Msg 15281, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 0
    SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', search for 'Database Mail XPs' in SQL Server Books Online.

    データベースメールXPを有効にする

    サーバーからのメールの送信を開始する前に、DatabaseMailXPが有効になっていることを確認する必要があります。

    これは非常に簡単です(ただし、このような高度なオプションは、経験豊富なデータベース管理者または認定されたSQL Server技術者のみが変更することをお勧めします)。

    データベースメールXPを有効にする方法は次のとおりです。

    EXEC sp_configure 'show advanced options', '1';
    RECONFIGURE
    GO
    EXEC sp_configure 'Database Mail XPs', 1;
    RECONFIGURE
    GO

    結果:

    Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
    Commands completed successfully.
    Commands completed successfully.

    メールアカウントやプロフィールなどを作成する

    データベースメールは、ユーザーアカウントから直接送信されるのではなく、プロファイルを介して送信されます。

    データベースメールを使用して電子メールを送信するには、データベースメールアカウント、データベースメールプロファイルを作成し、アカウントをプロファイルに追加してから、ユーザーにそのプロファイルへのアクセスを許可する必要があります。ユーザーはmsdbにいる必要があります データベース。

    これを行うためのT-SQLコードは、次のようになります。

    -- Switch to the msdb database
    USE msdb;
    
    -- Create a user on the msdb database
    CREATE USER Marge FOR LOGIN Marge;
    
    -- Create a Database Mail account  
    EXECUTE msdb.dbo.sysmail_add_account_sp  
        @account_name = 'DB Admin',  
        @description = 'Mail account for admin emails.',  
        @email_address = '[email protected]',  
        @replyto_address = '[email protected]',  
        @display_name = 'DB Automated Mailer',  
        @mailserver_name = 'smtp.example.com',
        @port = 25;  
      
    -- Create a Database Mail profile  
    EXECUTE msdb.dbo.sysmail_add_profile_sp  
        @profile_name = 'DB Admin Profile',  
        @description = 'Profile for admin emails.';  
      
    -- Add the account to the profile  
    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
        @profile_name = 'DB Admin Profile',  
        @account_name = 'DB Admin',  
        @sequence_number = 1;
      
    -- Grant the msdb user access to the Database Mail profile
    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
        @profile_name = 'DB Admin Profile',
        @principal_name = 'Marge',
        @is_default = 1;

    さまざまな詳細を独自のものに置き換える必要があります。これは、機能するメールサーバーを指定することも前提としています。

    これが完了すると、msdb.dbo.sp_send_dbmailを使用してメールを送信できるようになります。 ストアドプロシージャ。


    1. データベースのベンチマーク101-パート1

    2. PHPを使用してMySqlテーブルをインポート/復元する方法

    3. SQL Server、誤解を招くXLOCKと最適化

    4. 2つの同期レプリカ間でSQLServerのAlwaysON可用性グループを構成します。パート2