SQL Server管理オブジェクト(SMO)インターフェイスを使用してSQL Serverエージェントジョブを起動するC#プログラムがあります。次のようになります。
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認証を使用して、作業を簡素化しています。
さて、私の問題は、SERVER_USERNAME
が'sysadmin' dboロールの一部でない限り、ssis_job.CurrentRunStatus
常に' Idle
'であるということです-ジョブが実行されていることがわかっている場合でも。エラーは発生せず、常にアイドル状態を報告します。
ユーザーが管理者の場合、ステータスは期待どおりに返されます。
あなたが言う役割のメンバーシップ?
さて、私はSERVER_USERNAME
SQLServerログインをmsdbロールSQLAgentOperatorRoleに追加しましたが、それは役に立たなかったようです。
ジョブの所有者はシステム管理者アカウントです。それが問題である場合、回避方法がわかりません。
何か案は?