Introduction
Introduction
Introduction
This is an enterprise solution for sending mails from the SQL Server database engine to SMTP servers. SQL Server
database applications can communicate with users through an email system. It provides features like scalability, security,
and reliability.
It uses an SMTP server to send mail. SQL Server 2000 supports SQL Mail, which supports MAPI profiles to send email
instead of an SMTP server. SQL Mail requires a MAPI-compliant mail server (Microsoft Exchange Server) and a MAPI client
(Microsoft Outlook).
We can send a text message, query result, file as attachment. The database mail can be used to notify users or
administrators regarding events raised in SQL Server. For example, if an automation process like replication, database
mirroring fails or there are latency related problems then SQL Server can use this feature to notify the administrators or
operators.
Points to Remember
Like SQL Mail, database mail doesn’t require a MAPI – a compliant mail server like Outlook Express or extended
programming interface.
Better performance. Impact of sending mails to SMTP servers by SQL Server is reduced as this task is implemented by an
external process initiated by the DatabaseMail.exe file.
Works fine in a cluster based environment.
64-bit support.
Database mail configuration information is maintained in an MSDB database.
Only members of SysAdmin and DatabaseMailUserRole database role of MSDB can send mails by default.
Allows sending messages in different formats like text and HTML.
Supports logging and auditing features through different system tables of MSDB.
Sp_send_dbmail
This is a system defined stored procedure which is used by SQL Server to send email using the database mail feature. This
stored procedure is present in the MSDB database.
MSDB Database
Consists of all stored procedures, system tables, and database roles related to database mail.
Service Broker
To establish communication between the SQL Server engine and the database mail engine we need a service broker. It
submits the messages to the mail engine.
DatabaseMail.exe
This file is present in the Binn folder of the respective instance. It is the database mail engine.
How it works?
When a run time error occurs due to any automated task like backups, replication etc database engine raise
the error and same information is submitted to Database Mail engine, then database mail engine will submit
Configuring Database Mail in SQL Server
the mail to SMTP Server using EmailID and Password mentioned in profile. At the last SMTP Server sends
mail to recipients.
Error --> DB Engine --> DB Mail Engine --> SMTP Server --> Recipients
USE [master]
GO
ALTER DATABASE [MSDB] SET ENABLE_BROKER WITH NO_WAIT
GO
Steps to configure
USE [master]
GO
ALTER DATABASE [MSDB] SET ENABLE_BROKER WITH NO_WAIT
GO
3. Configure mail profile (profile is a collection of accounts).
4. Add SMTP account(s).
5. Make the profile private or public.
1. Go to Object Explorer
2. Management
3. Right click on Database Mail and select “Configure Database Mail” as follows
4. Next
5. Select “Setup Database Mail by performing the following tasks” as follows
Configuring Database Mail in SQL Server
6. Next
7. Enter profile name = “SQL Profile” and description as follows
8. Click on “Add” button and enter the following details. Always use your own email ID. Generally we have to use here the
company email id. We have to raise a ticket to the mail server admin team to get the following details.
o Separate email id for SQL Server (This is From Email ID)
o SMTP server name
o Port number
o SSL feature should be enable or disable.
Here I am using my personal email id. In Basic Authentication option enter the same email ID along with the valid
password of the email ID.
9. OK
10. Next
11. Under Manage Profile Security option make the profile as public by selecting checkbox and default as follows
Configuring Database Mail in SQL Server
12. Next
13. Accept the default settings for System Parameters as follows
14. Next
15. Finish
16. Close.
Observations
Use msdb
Go
--Step1: Varifying the new profile
select * from sysmail_profile
--Step2: Verifying accounts
select * from sysmail_account
--Step3: To check the accounts of a profile
select * from sysmail_profileaccount
where profile_id=3
--Step4: To display mail server details
select * from sysmail_server
17. We have configured database mail feature successfully. Let's test the mail feature as follows.
18. Go to Object Explorer -> Management -> right click on Database Mail -> Send Test Email
Configuring Database Mail in SQL Server
19. Enter the following details. You can use required values.
o Select Profile name: SQLProfile
o To: [email protected] (Any Email ID- generally it should be administrators group email ID)
o Subject: Hi, Backup Alert
o Body: Backup of master database was generated successfully.
22. Check your mail box you can find new Email from SQL Server.
We can send the mail programmatically from any stored procedure, job or batch file using sp_send_dbmail system
procedure. Before sending the mail we can check the required parameters by viewing the definition of stored procedure.
Configuring Database Mail in SQL Server
We have to pass the following parameters to the above stored procedure.
Profile_name (We can mention the above profile name which we have created)
Step2: Verifying using sysmail_allitems. Here check the sent_status column of last Email.
use msdb
go
select * from sysmail_allitems
Example 2: Sending mail using sp_send_dbmail stored procedure which has query result as
message.
Step 1: Sending mail (I am using emp table present in Test database)
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLProfile',
@recipients = '[email protected]',
@query = 'SELECT COUNT(*) as No_Empls FROM
Test.dbo.emp',
@subject = 'No of Employees Working';
Step 2: Verifying using sysmail_allitems. Here check the sent_status column of last Email.
use msdb
go
select * from sysmail_allitems
--Creating a Profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'SQLProfile',
@description = 'Mail Service for SQL Server' ;
Collapse | Copy Code
-- Create a Mail account for gmail. We have to use our company mail account.
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQL_Email_Account',
@email_address = '[email protected]',
@mailserver_name = 'smtp.gmail.com',
@port=587,
@enable_ssl=1,
@username='youremail',
@password='Emailid password'
Collapse | Copy Code
Summary
Database Mail feature was introduced in SQL Server 2005 version, which can be used to notify the
administrators/operators. It provides better performance as well as cluster aware feature.