sql >> Database teknologi >  >> RDS >> Sqlserver

Aktiver Database Mail i SQL Server (T-SQL)

SQL Server har en databasemail-indstilling, som du kan bruge til at sende mail fra databaseserveren.

Du kan f.eks. få meddelelser, når SQL Server Agent-job er færdige med at køre eller mislykkes, eller når der er en alvorlig fejl osv.

Når Database Mail ikke er konfigureret

I SQL Server sendes mail ved at udføre sp_send_dbmail gemt procedure i msdb database.

Her er et eksempel:

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

Dette forudsætter dog, at SQL Server er konfigureret til at sende mail.

Hvis du prøver at sende e-mail fra SQL Server, men du får en fejl som følgende, betyder det, at du i øjeblikket ikke har Database Mail aktiveret.

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.

Aktiver Database Mail XP'er

Før du begynder at sende mail fra serveren, skal du sikre dig, at du har Database Mail XP'er aktiveret.

Dette er ret nemt at gøre (selvom Microsoft anbefaler, at avancerede muligheder som dette kun bør ændres af en erfaren databaseadministrator eller certificeret SQL Server-tekniker).

Sådan aktiverer du Database Mail XP'er:

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.

Opret en mailkonto, profil osv.

Databasemail sendes via en profil i stedet for en brugerkonto direkte.

For at sende e-mail med Database Mail skal du oprette en Database Mail-konto, en Database Mail-profil, tilføje kontoen til profilen og derefter give en bruger adgang til denne profil. Brugeren skal være på msdb database.

T-SQL-koden til at gøre dette kunne se sådan 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 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 bliver nødt til at erstatte de forskellige detaljer med dine egne. Dette forudsætter også, at du angiver en mailserver, der virker.

Når du har gjort det, bør du være i stand til at sende mail med msdb.dbo.sp_send_dbmail gemt procedure.


  1. Fordele ved at bruge Microsoft Access-skabeloner

  2. 5 praktiske databasetips til begyndere

  3. Konverter 'datetime' til 'smalldatetime' i SQL Server (T-SQL-eksempler)

  4. FEJL:tilladelse nægtet til relationstabelnavn på Postgres, mens du prøvede en SELECT som skrivebeskyttet bruger