SQL Server 使用触发器发送电子邮件实例代码分享

2025-01-15 04:19:14   小编

SQL Server 使用触发器发送电子邮件实例代码分享

在数据库管理和应用开发中,SQL Server 的触发器功能强大,能在特定事件发生时自动执行预定义操作。而结合发送电子邮件功能,能让我们及时获取数据库关键变化的通知。下面分享一个 SQL Server 使用触发器发送电子邮件的实例代码及详细说明。

确保 SQL Server 数据库邮件功能已启用。通过 SQL Server 配置管理器,开启“数据库邮件”服务。之后,需要创建一个数据库邮件账户和一个数据库邮件配置文件,并将该配置文件设置为默认配置文件。

创建数据库邮件账户的代码如下:

EXEC msdb.dbo.sysmail_add_account_sp
    @account_name = 'MyEmailAccount',
    @description = '用于发送邮件的账户',
    @email_address = 'your_email@example.com',
    @display_name = 'Database Notification',
    @mailserver_name ='smtp.example.com',
    @port = 587,
    @username = 'your_smtp_username',
    @password = 'your_smtp_password';

接着创建数据库邮件配置文件:

EXEC msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'MyEmailProfile',
    @description = '数据库邮件配置文件';

将账户添加到配置文件:

EXEC msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'MyEmailProfile',
    @account_name = 'MyEmailAccount',
    @sequence_number = 1;

设置默认配置文件:

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'MyEmailProfile',
    @principal_name = 'public',
    @is_default = 1;

接下来创建一个触发器,当特定表有新记录插入时发送电子邮件通知。假设我们有一个名为“Employees”的表,每当有新员工记录插入时发送邮件:

CREATE TRIGGER trg_InsertEmployee
ON Employees
AFTER INSERT
AS
BEGIN
    DECLARE @emailSubject NVARCHAR(255);
    DECLARE @emailBody NVARCHAR(MAX);

    SET @emailSubject = '新员工入职通知';
    SET @emailBody = '有新员工加入公司,请查看相关信息。';

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'MyEmailProfile',
        @recipients ='recipient@example.com',
        @subject = @emailSubject,
        @body = @emailBody;
END;

以上代码创建了一个名为“trg_InsertEmployee”的触发器,在“Employees”表插入新记录后,会发送一封主题为“新员工入职通知”,内容为“有新员工加入公司,请查看相关信息。”的电子邮件给指定收件人。

通过这种方式,利用 SQL Server 触发器结合数据库邮件功能,能方便快捷地实现数据库事件与邮件通知的联动,提升数据管理的及时性和有效性。无论是监控数据变化,还是重要操作提醒,都能轻松应对。

TAGS: 实例代码 电子邮件 SQL Server 触发器

欢迎使用万千站长工具!

Welcome to www.zzTool.com