gpt4 book ai didi

c# - 使用 SMO.Agent 检索 SQL 作业执行状态 - 安全问题

转载 作者:太空狗 更新时间:2023-10-29 21:42:16 24 4
gpt4 key购买 nike

我有一个 C# 程序可以触发 SQL Server Agent使用 SQL Server Management Objects 的工作(SMO) 接口(interface)。它看起来像:

Server ssis_server = new Server(
new ServerConnection(SERVER_NAME, SERVER_USERNAME, SERVER_PASSWORD)
);

var agent = ssis_server.JobServer;
var ssis_job = agent.Jobs[job_name];

var current_status = ssis_job.CurrentRunStatus;

if (current_status == JobExecutionStatus.Idle)
{
ssis_job.Start();
OnSuccess("Job started: " + job_name);
}
else
{
OnError("Job is already running or is not ready.");
}

我正在使用 SQL Server Authentication在这一点上简化事情,同时我解决这个问题。

现在,我的问题是,除非 SERVER_USERNAME 是“sysadmin”dbo 角色的一部分,否则 ssis_job.CurrentRunStatus 始终为“Idle” ' - 即使我知道作业正在运行。它不会出错,只是总是报告空闲。
如果用户是管理员,则状态会按预期返回。

你说角色成员?
好吧,我将 SERVER_USERNAME SQL Server 登录添加到 msdb 角色 SQLAgentOperatorRole,这似乎没有帮助。
作业的所有者是系统管理员帐户 - 如果这是问题所在,我不确定如何解决。

有什么想法吗?

最佳答案

在查看状态前需要调用ssis_job的Refresh()方法刷新job,才能得到正确的信息。

关于c# - 使用 SMO.Agent 检索 SQL 作业执行状态 - 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2197689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com