У меня есть программа C#, которая исчерпывает задания SQL Server Agent с помощью Объектов управления SQL Server (SMO) интерфейсы. Это смотрит что-то как:
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 в этой точке к simplfy вещам, пока я разрабатываю это.
Теперь, моя проблема - это если SERVER_USERNAME
часть 'системного администратора' dbo роль, ssis_job.CurrentRunStatus
всегда'Idle
'-даже когда я знаю, задание работает. Это убирает не ошибку, просто всегда сообщает неактивный.
Если пользователь является администратором, то состояние возвращается как ожидалось.
Ролевое членство Вы говорите?
Ну, я добавил SERVER_USERNAME
Вход в систему SQL Server msdb Роли SQLAgentOperatorRole, который, казалось, не помог.
Владелец задания является учетной записью системного администратора - если это - проблема, я не уверен, как работать вокруг этого.
Какие-либо идеи?