sql >> Databasteknik >  >> RDS >> Sqlserver

Aktivera Databas Mail i SQL Server (T-SQL)

SQL Server har ett databaspostalternativ som du kan använda för att skicka mail från databasservern.

Du kan till exempel få meddelanden när SQL Server Agent-jobb slutar köras eller misslyckas, eller när det finns ett allvarligt fel, etc.

När Databas Mail inte är konfigurerad

I SQL Server skickas e-post genom att köra sp_send_dbmail lagrad procedur i msdb databas.

Här är ett exempel:

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';

Detta förutsätter dock att SQL Server är konfigurerad för att skicka e-post.

Om du försöker skicka e-post från SQL Server men du får ett felmeddelande som följande betyder det att du för närvarande inte har Databas Mail aktiverat.

Msg 15281, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 0
SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', search for 'Database Mail XPs' in SQL Server Books Online.

Aktivera Databas Mail XPs

Innan du börjar skicka e-post från servern måste du se till att du har aktiverat Database Mail XPs.

Detta är ganska enkelt att göra (även om Microsoft rekommenderar att avancerade alternativ som detta endast bör ändras av en erfaren databasadministratör eller certifierad SQL Server-tekniker).

Så här aktiverar du Database Mail XP:

EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO

Resultat:

Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
Commands completed successfully.
Commands completed successfully.

Skapa ett e-postkonto, en profil osv

Databasmail skickas via en profil snarare än ett användarkonto direkt.

För att skicka e-post med Database Mail måste du skapa ett Database Mail-konto, en Database Mail-profil, lägga till kontot i profilen och sedan ge en användare åtkomst till den profilen. Användaren måste vara på msdb databas.

T-SQL-koden för att göra detta kan se ut ungefär så här:

-- 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 the msdb 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;

Du måste ersätta de olika detaljerna med dina egna. Detta förutsätter också att du anger en e-postserver som fungerar.

När du har gjort det bör du kunna skicka e-post med msdb.dbo.sp_send_dbmail lagrad procedur.


  1. MySQL misslyckas på:mysql ERROR 1524 (HY000):Plugin 'auth_socket' är inte laddad

  2. Hur man konverterar rader till kolumner i Oracle-tabellen

  3. Anslut till SQL Server med Windows-autentisering från en Linux-maskin via JDBC

  4. Bygga ett tabellberoendediagram med en rekursiv fråga