You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供将现有操作员添加到SQL Server代理作业的脚本

将已存在操作员添加到SQL Server代理作业的脚本

脚本说明

以下脚本用于把已存在的SQL Server代理操作员关联到指定作业,可配置作业在执行失败、成功或完成时向该操作员发送通知。

完整脚本

-- 替换为你的实际参数值
DECLARE @JobName NVARCHAR(128) = N'目标作业名称';
DECLARE @OperatorName NVARCHAR(128) = N'已存在的操作员名称';
-- 通知类型:1=失败时通知,2=成功时通知,4=完成时通知;可组合(如1+2=3表示失败和成功都通知)
DECLARE @NotifyLevel INT = 7;

-- 校验作业是否存在
IF NOT EXISTS (SELECT 1 FROM msdb.dbo.sysjobs WHERE name = @JobName)
BEGIN
    RAISERROR(N'作业 "%s" 不存在,请核对名称。', 16, 1, @JobName);
    RETURN;
END

-- 校验操作员是否存在
IF NOT EXISTS (SELECT 1 FROM msdb.dbo.sysoperators WHERE name = @OperatorName)
BEGIN
    RAISERROR(N'操作员 "%s" 不存在,请核对名称。', 16, 1, @OperatorName);
    RETURN;
END

-- 移除已存在的重复通知配置(避免添加报错)
IF EXISTS (
    SELECT 1 FROM msdb.dbo.sysjoboperators 
    WHERE job_id = (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = @JobName)
      AND operator_id = (SELECT operator_id FROM msdb.dbo.sysoperators WHERE name = @OperatorName)
)
BEGIN
    EXEC msdb.dbo.sp_delete_jobnotification
        @job_name = @JobName,
        @operator_name = @OperatorName;
END

-- 添加操作员到作业通知列表
EXEC msdb.dbo.sp_add_jobnotification
    @job_name = @JobName,
    @operator_name = @OperatorName,
    @notification_level_eventlog = @NotifyLevel, -- 写入事件日志的触发级别
    @notification_level_email = @NotifyLevel,     -- 发送邮件的触发级别
    @notification_level_netsend = @NotifyLevel,   -- 发送网络消息的触发级别
    @notification_level_page = @NotifyLevel;      -- 发送寻呼的触发级别

PRINT N'操作员 "%s" 已成功关联到作业 "%s" 的通知列表。', @OperatorName, @JobName;

使用提示

  • 替换@JobName和@OperatorName为你的实际作业与操作员名称
  • 调整@NotifyLevel的值选择通知场景:
    • 1:仅作业失败时通知
    • 2:仅作业成功时通知
    • 4:仅作业完成时通知(无论成败)
    • 组合值:比如3(1+2)表示失败和成功都通知,7(1+2+4)表示所有场景都通知
  • 脚本会自动校验作业和操作员的存在性,避免无效操作

权限赋予补充

如果需要给操作员开放作业管理权限(如查看、修改、执行作业),可使用以下脚本:

DECLARE @OperatorLogin NVARCHAR(128) = N'操作员对应的登录名';
DECLARE @JobName NVARCHAR(128) = N'目标作业名称';

-- 授予登录名作业访问权限
EXEC msdb.dbo.sp_grant_jobaccess
    @login_name = @OperatorLogin,
    @job_name = @JobName;

PRINT N'登录名 "%s" 已获得作业 "%s" 的管理权限。', @OperatorLogin, @JobName;

内容的提问来源于stack exchange,提问作者sql100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:20:41