Hvis du prøver at sende mail fra SQL Server, men du får et "profilnavn er ikke gyldigt", er det sandsynligvis fordi du ikke har angivet en gyldig profil for @profile_name
argument.
Eksempel
Lad os f.eks. sige, at du bruger følgende T-SQL-kode til at sende en notifikations-e-mail til administratoren, når et SQL Server Agent-job mislykkes:
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';
Men du får følgende fejlmeddelelse:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Denne fejl fortæller os specifikt, at "profilnavnet ikke er gyldigt".
For at sende e-mail med Database Mail skal du angive en profil i stedet for en brugerkonto direkte. I dette tilfælde specificerede jeg en @profile_name
af DB Admin Profile
, men sådan en profil findes faktisk ikke.
Før jeg kan sende e-mail, er det, jeg skal gøre, at tilføje en bruger til msdb
database, opret en databasemailkonto, opret derefter en profil og føj databasemailkontoen til den profil. Jeg skal så tilføje brugeren til profilen.
Alt i alt vil det se nogenlunde sådan her ud:
-- 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;
Det er klart, at du skal erstatte de forskellige detaljer med dine egne. Dette forudsætter også, at du angiver en mailserver, der virker.
Når du er færdig, skulle du være klar til at sende mail.