Sql-Server
託管在 Azure VM (IaaS) 上的 SQL Server 是否支持 DB 郵件?
託管在 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