Linux 上的 SQL Server 代理的数据库邮件和电子邮件警报

适用于:Linux 上的 SQL Server

本文展示了如何在Linux上设置数据库邮件并配合SQL Server 代理(mssql-server-agent)使用。

1. 启用数据库邮件

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE WITH OVERRIDE;
GO

EXECUTE sp_configure 'Database Mail XPs', 1;
GO

RECONFIGURE;
GO

2.创建新帐户

EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'SQLAlerts',
    @description = 'Account for Automated DBA Notifications',
    @email_address = 'sqlagenttest@example.com',
    @replyto_address = 'sqlagenttest@example.com',
    @display_name = 'SQL Agent',
    @mailserver_name = 'smtp.example.com',
    @port = 587,
    @enable_ssl = 1,
    @username = 'sqlagenttest@example.com',
    @password = '<password>';
GO

注意

密码应遵循 SQL Server 默认密码策略。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。 密码可最长为 128 个字符。 使用的密码应尽可能长,尽可能复杂。

3.创建默认配置文件

EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'default',
    @description = 'Profile for sending Automated DBA Notifications';
GO

4.将数据库邮件帐户添加到数据库邮件配置文件中

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'default',
    @principal_name = 'public',
    @is_default = 1;
GO

5.将帐户添加到配置文件中

EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'default',
    @account_name = 'SQLAlerts',
    @sequence_number = 1;
GO

6.发送测试电子邮件

你可能需要转到电子邮件客户端,启用“允许不太安全的客户端发送邮件”选项。 并非所有客户端都将数据库邮件识别为电子邮件守护程序。

EXECUTE msdb.dbo.sp_send_dbmail
    @profile_name = 'default',
    @recipients = 'recipient-email@example.com',
    @subject = 'Testing DBMail',
    @body = 'This message is a test for DBMail';
GO

7.使用 mssql-conf 或环境变量设置数据库邮件配置文件

可以使用 mssql-conf 实用工具或环境变量来注册数据库邮件配置文件。 在这个例子中,将配置文件 default命名为。

  • 集合为 mssql-conf

    sudo /opt/mssql/bin/mssql-conf set sqlagent.databasemailprofile default
    
  • 设置环境变量:

    MSSQL_AGENT_EMAIL_PROFILE=default
    

8. 为 SQL Server 代理 作业通知设置操作员

EXECUTE msdb.dbo.sp_add_operator
    @name = N'JobAdmins',
    @enabled = 1,
    @email_address = N'recipient-email@example.com',
    @category_name = N'[Uncategorized]';
GO

9.“代理测试作业”成功后发送电子邮件

EXECUTE msdb.dbo.sp_update_job
    @job_name = 'Agent Test Job',
    @notify_level_email = 1,
    @notify_email_operator_name = N'JobAdmins';
GO