To create a template for setting up database mail for multiple SQL Server instance, I have written a following script using Gmail account:
With the script, I can easily create database mail for multiple SQL Server instance
-------------------------------------------------------------
-- Database Mail Simple Configuration Template.
--
-- This template creates a Database Mail profile, an SMTP account and
-- associates the account to the profile.
-- The template does not grant access to the new profile for
-- any database principals. Use msdb.dbo.sysmail_add_principalprofile
-- to grant access to the new profile for users who are not
-- members of sysadmin.
-------------------------------------------------------------
DECLARE @profile_name sysname,
@account_name sysname,
@SMTP_servername sysname,
@email_address NVARCHAR(128),
@display_name NVARCHAR(128);
-- Profile name. Replace with the name for your profile
SET @profile_name = 'SQLAlertEmail';
-- Account information. Replace with the information for your account.
SET @account_name = 'QuangVinh-admin';
SET @SMTP_servername = 'smtp.gmail.com';
SET @email_address = 'MyEmailAddress';
SET @display_name = 'Quang Vinh';
-- Start a transaction before adding the account and the profile
BEGIN TRANSACTION ;
-- Verify the specified account and profile do not already exist.
IF EXISTS (SELECT * FROM msdb.dbo.sysmail_profile WHERE name = @profile_name)
BEGIN
Print('The specified Database Mail profile already exists. We will delete and recreate it');
EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name = @profile_name ;
END;
IF EXISTS (SELECT * FROM msdb.dbo.sysmail_account WHERE name = @account_name )
BEGIN
Print('The specified Database Mail account already exists. We will delete it and recreate it') ;
EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name = @account_name ;
END;
DECLARE @rv INT;
-- Add the account
EXECUTE @rv=msdb.dbo.sysmail_add_account_sp
@account_name = @account_name,
@email_address = @email_address,
@display_name = @display_name,
@mailserver_name = @SMTP_servername,
@port=587,
@username='MyEmailAddress',
@password='MyPassword',
@enable_ssl=1;
IF @rv<>0
BEGIN
RAISERROR('Failed to create the specified Database Mail account.', 16, 1) ;
GOTO done;
END
-- Add the profile
EXECUTE @rv=msdb.dbo.sysmail_add_profile_sp
@profile_name = @profile_name ;
IF @rv<>0
BEGIN
RAISERROR('Failed to create the specified Database Mail profile.', 16, 1);
ROLLBACK TRANSACTION;
GOTO done;
END;
-- Associate the account with the profile.
EXECUTE @rv=msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = @profile_name,
@account_name = @account_name,
@sequence_number = 1 ;
IF @rv<>0
BEGIN
RAISERROR('Failed to associate the speficied profile with the specified account.', 16, 1) ;
ROLLBACK TRANSACTION;
GOTO done;
END;
Print('Configure Database mail successfully')
COMMIT TRANSACTION;
done:
GO
Note: I used SQL Server management Studio -> View -> Template explorer -> I choose the template to create database mail and basing on the original script, I wrote the script above.
Refer: http://www.mssqltips.com/sqlservertip/2578/setup-sql-server-database-mail-to-use-a-gmail-hotmail-yahoo-or-aol-account/
Các câu truy vấn liên quan đến Database Mail:
http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/
0 comments:
Post a Comment