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
を使用してメールを送信できるようになります。 ストアドプロシージャ。