Als u e-mail probeert te verzenden vanaf SQL Server, maar u krijgt een "profielnaam is niet geldig", komt dat waarschijnlijk omdat u geen geldig profiel hebt opgegeven voor de @profile_name
argument.
Voorbeeld
Stel dat u bijvoorbeeld de volgende T-SQL-code gebruikt om een e-mailmelding naar de beheerder te sturen wanneer een SQL Server Agent-taak mislukt:
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';
Maar je krijgt de volgende foutmelding:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Deze fout vertelt ons specifiek dat de "profielnaam niet geldig is".
Om e-mail te verzenden met Database Mail moet u direct een profiel opgeven in plaats van een gebruikersaccount. In dit geval heb ik een @profile_name
. opgegeven van DB Admin Profile
, maar zo'n profiel bestaat niet echt.
Voordat ik e-mail kan verzenden, moet ik een gebruiker toevoegen aan de msdb
database, maak een databasemailaccount aan, maak vervolgens een profiel aan en voeg de databasemailaccount toe aan dat profiel. Ik moet dan de gebruiker aan het profiel toevoegen.
Alles bij elkaar ziet het er ongeveer zo uit:
-- 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;
Het is duidelijk dat u de verschillende details door die van uzelf moet vervangen. Dit veronderstelt ook dat je een mailserver specificeert die werkt.
Als je klaar bent, zou je klaar moeten zijn om e-mail te verzenden.