SQL Serverからメールを送信しようとしても、「プロファイル名が無効です」というメッセージが表示された場合は、@profile_name
に有効なプロファイルを指定していない可能性があります。 引数。
例
たとえば、次のT-SQLコードを使用して、SQLServerエージェントジョブが失敗するたびに管理者に通知メールを送信するとします。
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';
ただし、次のエラーが発生します:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
このエラーは、「プロファイル名が無効です」ことを具体的に示しています。
データベースメールを使用して電子メールを送信するには、ユーザーアカウントではなく、プロファイルを直接指定する必要があります。この場合、@profile_name
を指定しました DB Admin Profile
の 、しかしそのようなプロファイルは実際には存在しません。
メールを送信する前に、msdb
にユーザーを追加する必要があります。 データベースを作成し、データベースメールアカウントを作成してから、プロファイルを作成し、データベースメールアカウントをそのプロファイルに追加します。次に、ユーザーをプロファイルに追加する必要があります。
全体として、次のようになります。
-- 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 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;
もちろん、さまざまな詳細を独自のものに置き換える必要があります。これは、機能するメールサーバーを指定することも前提としています。
完了すると、メールを送信する準備が整います。