平常我們大都是使用GUI圖形界面的方式來配置數據庫郵件,但是如果需要一口氣在幾十台SQL服務器上配置數據庫郵件呢?
我們可以先使用T-SQL語句制作好一份配置數據庫郵件的腳本;然後把相關的郵件信息和配置文件信息填入腳本中;最後將將腳本拷貝到每台SQL服務器上執行,即可快速完成批量的郵件配置工作。
--啟動數據庫郵件XPs--
USE master
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
--查詢是否開啟Service Broker--
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'
--開啟Service Broker--
ALTER DATABASE msdb SET ENABLE_BROKER
--創建郵件賬戶--
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = '數據庫郵件賬戶:Test',
@description = '相關說明:Test for Notifications',
@email_address = '[email protected]',
@display_name = '顯示名稱:Test',
@mailserver_name = '郵件服務器名稱:smtp.exanple.com',
@port = 25,
@username = '郵件賬號:[email protected]',
@password = '密碼',
@use_default_credentials = 0,
@enable_ssl = 0,
@account_id = 1
GO
--創建新郵件配置--
USE msdb
GO
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = '配置文件名稱:Profile1',
@description = '相關說明:Test1 for Notifications'
GO
--將賬戶添加到配置文件中:
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = '配置文件名稱:Profile1',
@account_name = '郵件賬戶名:Test',
@sequence_number = 1
GO
--授予任意用戶使用數據庫郵件配置文件的權限--
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = '配置文件名稱:Profile1',
@principal_name = 'public',
@is_default = 1 ;
2. 或者使用腳本發送。注意修改相應的配置文件名稱和接收測試郵件的地址。
--發送測試郵件--
EXECUTE msdb.dbo.sp_send_dbmail
@profile_name = 'Profile1',
@recipients = '[email protected]',
@Subject = 'Test Message generated from SQL Server Database Mail',
@Body = 'This is a test message from SQL Server Database Mail'
GO
1. 在MSDB系統數據庫中查看相關數據庫郵件信息,便於檢查排錯。
--查詢是否開啟Service Broker--
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'
--檢查數據庫郵件在msdb中的狀態
EXECUTE dbo.sysmail_help_status_sp
--啟動數據庫郵件--
EXECUTE dbo.sysmail_start_sp
--檢查郵件隊列的狀態--
sysmail_help_queue_sp @queue_type = 'Mail'
--檢查數據庫郵件事件日志--
SELECT * FROM sysmail_event_log
--檢查所有項目的狀態郵件隊列--
SELECT * FROM sysmail_allitems
--刪除配置--
DECLARE
@account_name sysname,
@profile_name sysname;
SELECT
@account_name = '[email protected]',
@profile_name = 'Profile1';
-- 從郵件配置文件中刪除數據庫郵件帳號
EXEC msdb.dbo.sysmail_delete_profileaccount_sp
@profile_name = 'Profile1',
@account_name = '數據庫郵件賬戶:Test';
-- 刪除數據庫郵件帳號
EXEC msdb.dbo.sysmail_delete_account_sp
@account_name = '數據庫郵件賬戶:Test';
-- 刪除數據庫郵件配置文件
EXEC msdb.dbo.sysmail_delete_profile_sp
@profile_name = 'Profile1';
-- 禁用數據庫郵件功能
EXEC sys.sp_configure 'Database Mail XPs', 0;
RECONFIGURE;
EXEC sys.sp_configure N'show advanced options', 0
RECONFIGURE;