Wenn Sie versuchen, E-Mails von SQL Server zu senden, aber die Meldung „Profilname ist ungültig“ erhalten, liegt dies wahrscheinlich daran, dass Sie kein gültiges Profil für @profile_name
angegeben haben Argument.
Beispiel
Angenommen, Sie verwenden den folgenden T-SQL-Code, um eine Benachrichtigungs-E-Mail an den Administrator zu senden, wenn ein SQL Server-Agent-Auftrag fehlschlägt:
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';
Aber Sie erhalten die folgende Fehlermeldung:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Dieser Fehler teilt uns ausdrücklich mit, dass der „Profilname ungültig“ ist.
Um E-Mails mit Database Mail zu senden, müssen Sie direkt ein Profil anstelle eines Benutzerkontos angeben. In diesem Fall habe ich einen @profile_name
angegeben des DB Admin Profile
, aber ein solches Profil existiert eigentlich nicht.
Bevor ich E-Mails senden kann, muss ich einen Benutzer zur msdb
hinzufügen Datenbank, erstellen Sie ein Datenbank-E-Mail-Konto, erstellen Sie dann ein Profil und fügen Sie das Datenbank-E-Mail-Konto zu diesem Profil hinzu. Ich muss dann den Benutzer zum Profil hinzufügen.
Alles in allem sieht es ungefähr so aus:
-- 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;
Natürlich müssen Sie die verschiedenen Details durch Ihre eigenen ersetzen. Dies setzt auch voraus, dass Sie einen funktionierenden Mailserver angeben.
Sobald Sie fertig sind, sollten Sie bereit sein, E-Mails zu senden.