データベース メール プロファイル、アカウント、およびオペレータを作成および構成するための sysadmin 用のスクリプトを用意しました。彼はスクリプトを実行したので、一時的なジョブを作成しましたが、失敗しました。次に、ジョブが失敗したときに電子メール通知を設定します。ジョブを実行しましたが、電子メールが送信されません。次に
msdb.dbo.sp_send_dbmail
、同じオペレーターを使用して手順を実行しようとしましたが、電子メールを受け取りました。ジョブが失敗したときに電子メールを送信しない理由は何ですか? ジョブが失敗したときに電子メール通知を使用する場合に実行される手順はどれですか? とは異なりsp_send_dbmail
ますか?もう 1 つのことは、データベースのメール ログに電子メールの送信ステータスに関する情報がない (空である) ことです。ログを表示する権限がないのでしょうか?
プロファイルを public, running として設定しましたが、logged as dbowner を
dbo.sysmail_add_principalprofile_sp procedure
実行している電子メールを送信しようとすると、エラーが発生します。EXECUTEアクセス許可が拒否されました。msdb.dbo.sp_send_dbmail
SQL Server 2008 を使用しています。
これは、データベース メールを作成および構成するために sysadmin に渡した T-SQL コードです。
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Mail Account',
@description = 'Mail account for administrative e-mail.',
@email_address = 'xx@xx.pl',
@display_name = 'Job failure notification',
@mailserver_name = 'xx.xx.xxx' ,
@username = 'aaa',
@password = 'xxx'
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'Database Mail Profile',
@description = 'Profile used for job failure notifications.' ;
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'Database Mail Profile',
@account_name = 'Mail Account',
@sequence_number =1 ;
-- Enable Mail profile in SQL Agent
EXEC master.dbo.xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
N'DatabaseMailProfile',
N'REG_SZ',
N'Database Mail Profile'
GO
-- Create new operator
EXEC msdb.dbo.sp_add_operator @name=N'SQL Job Failure',
@enabled=1,
@weekday_pager_start_time=90000,
@weekday_pager_end_time=180000,
@saturday_pager_start_time=90000,
@saturday_pager_end_time=180000,
@sunday_pager_start_time=90000,
@sunday_pager_end_time=180000,
@pager_days=0,
@email_address=N'xx@xx.pl',
@category_name=N'[Uncategorized]'
GO
-- Setting profile as public
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'Database Mail Profile',
@principal_name = 'public',
@is_default = 0 ;