SqlServer: 在存储过程中触发Sql作业执行

 在实际生活中,有时希望触发某个sql作业,那如何用存储过程来完成呢?

-- =============================================
-- Author:		yenange
-- Create date: 2024-01-31
-- Description:	执行某个Sql作业
-- =============================================
CREATE PROCEDURE Proc_Util_ExecJob
	@jobName nvarchar(128)
AS
BEGIN
	SET NOCOUNT ON;
/*
--为账号添加权限,替换下 YourAccount 对应的实际账号
USE [msdb]
GO
CREATE USER YourAccount FOR LOGIN YourAccount
GO
USE [msdb]
GO
ALTER ROLE [db_owner] ADD MEMBER YourAccount
GO
-- 给定账号添加作业执行权限
USE msdb;
GRANT EXECUTE ON dbo.sp_start_job TO YourAccount;
go
-- 给定账号添加对 msdb 数据库的执行权限
USE msdb;
GRANT EXECUTE TO YourAccount;
go
USE [msdb]
GO
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [YourAccount]
GO
*/
	-- 在存储过程中触发作业执行
    EXEC msdb.dbo.sp_start_job @job_name = @jobName;
END
GO
exec Proc_Util_ExecJob 'TestJob'

如果希望在C#中执行某个作业,可以使用如下代码:

实测:本地没有问题,远程很难调试成功。把角色调整成为sysadmin了都没办法直接执行,暂时不纠结了,如果有试验成功的大神可以贴出来一起研究。

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

class Program
{
    static void Main()
    {
        // 连接到 SQL Server 实例
        ServerConnection serverConnection = new ServerConnection("your_server_name");
        Server server = new Server(serverConnection);

        // 获取作业
        Job job = server.JobServer.Jobs["your_job_name"];

        // 执行作业
        job.Start();
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值