SQL Server Agent işlerini SQL Server Management Objects (SMO) arabirimlerini kullanarak işleyen bir C# programım var.SQL iş yürütme durumu almak için SMO.Agent kullanma - güvenlik sorunu
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.");
}
Ben bu işe iken şeyler simplfy bu noktada SQL Server Authentication kullanıyorum: Bu gibi görünür.
Şimdi, benim sorunumSERVER_USERNAME
'sysadmin' Dbo rolün parçası olmadığı sürece,
ssis_job.CurrentRunStatus
hep '
Idle
' olmasıdır - Ben iş çalıştıran biliyoruz bile. Hata yapmıyor, her zaman boşta olduğunu bildiriyor.
Kullanıcı bir yönetici ise, durum beklendiği gibi döndürülür.
Rol üyeliği diyorsunuz?
SERVER_USERNAME
SQL Server oturum açma işlemini msdb Rolü SQLAgentOperatorRole'a ekledim, yardımcı olmadı.
İşin sahibi bir sistem yöneticisi hesabıdır - sorun buysa, nasıl çalıştığını bilmiyorum.
Herhangi bir fikrin var mı?
[Yenile] (http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.sqlsmoobject.refresh.aspx) yöntemi [İş] (http: // msdn) .microsoft.com/en-us/library/Microsoft.SqlServer.Management.Smo.Agent.Job.aspx) nesnesi benim için düzeltildi. İşaret ettiğin için teşekkürler. –
Başlat() öğesinden hemen sonra çağırıyorsam, Refresh() benim için çalışmaz. Kodumu hata ayıkladığımda çalışır. Start() ile sql işinin başlangıcı arasında gecikme olabilir mi? – jambis