Jika Anda mencoba mengirim email dari SQL Server, tetapi Anda mendapatkan "nama profil tidak valid" itu mungkin karena Anda belum menentukan profil yang valid untuk @profile_name
argumen.
Contoh
Misalnya, katakanlah Anda menggunakan kode T-SQL berikut untuk mengirim email pemberitahuan ke administrator setiap kali pekerjaan Agen Server SQL gagal:
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';
Tetapi Anda mendapatkan kesalahan berikut:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Kesalahan ini secara khusus memberi tahu kita bahwa “nama profil tidak valid”.
Untuk mengirim email dengan Database Mail, Anda perlu menentukan profil alih-alih akun pengguna secara langsung. Dalam hal ini, saya menetapkan @profile_name
dari DB Admin Profile
, tetapi profil seperti itu sebenarnya tidak ada.
Sebelum saya dapat mengirim email, yang perlu saya lakukan adalah menambahkan pengguna ke msdb
database, buat akun email database, lalu buat profil dan tambahkan akun email database ke profil itu. Saya kemudian perlu menambahkan pengguna ke profil.
Secara keseluruhan, itu akan terlihat seperti ini:
-- 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;
Jelas, Anda harus mengganti berbagai detail dengan milik Anda sendiri. Ini juga mengasumsikan bahwa Anda menentukan server email yang berfungsi.
Setelah selesai, Anda harus siap mengirim email.