Sql-Server

託管在 Azure VM (IaaS) 上的 SQL Server 是否支持 DB 郵件?

  • October 14, 2019

託管在 Azure VM (IaaS) 上的 SQL Server 中是否存在 DB 郵件?

如果不支持 DB 郵件,那麼有哪些可用功能?

數據庫郵件在 Azure IaaS 上的 SQL Server 上可用,我的建議是使用 SendGrid 電子郵件傳遞服務(可在 Azure 市場上獲得)配置它,該服務為您的虛擬機提供 SMTP 中繼。利用此服務設置數據庫郵件以滿足您的警報或報告需求。

在這裡,您將了解如何在 Microsoft Azure 上設置 SendGrid 服務。

設置好 SendGrid 服務後,您可以在 SQL Server VM 上對其進行配置,如下所示。

首先在 sp_configure 上啟用它:

/*
  Turn on database mail
*/

-- Select the correct database
USE [msdb]
GO

-- Just shows standard options
sp_configure
GO

-- Turn on advance options
sp_configure 'show advanced options', 1;
GO

-- Reconfigure server
RECONFIGURE;
GO

-- Turn on database xp's
sp_configure 'Database Mail XPs', 1;
GO

-- Reconfigure server
RECONFIGURE

接下來,創建一個電子郵件帳戶:

/*
  Creating mail account with Send Grid SMTP server
*/

-- Create a Database Mail account 1
EXEC msdb.dbo.sysmail_add_account_sp
 @account_name = 'act_Default_Email',
 @description = 'Mail account for use by all database users.',
 @email_address = 'craftydba@outlook.com',
 @replyto_address = 'craftydba@outlook.com',
 @display_name = 'SQL SERVER (IAAS-SQL16DEV)',
 @mailserver_name = 'smtp.sendgrid.net',
 @username = 'azure_d2dfaaa7a26e3f645f978bb723cd95cb@azure.com',
 @password = 'enter your unique password';
GO

-- Show the new mail accounts
EXEC msdb.dbo.sysmail_help_account_sp;
GO

此外,您需要配置一個郵件配置文件。

/*
  Creating a mail profile
*/

-- Create a Database Mail profile
EXEC msdb.dbo.sysmail_add_profile_sp
 @profile_name = 'prf_Default_Email',
 @description = 'Profile used for administrative mail.' ;
GO

-- Show the new mail profile
EXEC msdb.dbo.sysmail_help_profile_sp;
GO

下一步是將電子郵件帳戶連結到個人資料:

/*
 Linking the mail profile to the account
*/

-- Add the account 1 to the profile
EXEC msdb.dbo.sysmail_add_profileaccount_sp
 @profile_name = 'prf_Default_Email',
 @account_name = 'act_Default_Email',
 @sequence_number = 1 ;
GO

-- Show the link between profile and accounts
EXEC msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'prf_Default_Email';

下一步,配置數據庫郵件以授予對郵件配置文件的公共訪問權限。這允許數據庫使用者發送郵件。

/*
  Given public access to profile
*/

-- Grant access to the profile to all users in the msdb database
EXEC msdb.dbo.sysmail_add_principalprofile_sp
 @profile_name = 'prf_Default_Email',
 @principal_name = 'public',
 @is_default = 1 ;

-- Show the new default profile
EXEC msdb.dbo.sysmail_help_principalprofile_sp

最後使用下面的程式碼來驗證這個解決方案。

/*
  Send test message
*/

-- Plain text message
EXEC msdb.dbo.sp_send_dbmail
 @profile_name = 'prf_Default_Email',
 @recipients = 'craftydba@outlook.com',
 @body = 'The stored procedure finished successfully.',
 @subject = 'Automated Success Message' ;
GO

引用自:https://dba.stackexchange.com/questions/250958