2010-02-04 7 views
5

Ho un programma C# che attiva i lavori SQL Server Agent utilizzando le interfacce SQL Server Management Objects (SMO). Sembra qualcosa di simile:Utilizzo di SMO.Agent per recuperare lo stato di esecuzione del lavoro SQL - problema di sicurezza

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."); 
} 

sto usando SQL Server Authentication a questo punto per simplfy cose mentre io lavoro questo fuori.

Ora, il mio problema è che a meno che il SERVER_USERNAME fa parte della 'sysadmin' dbo ruolo, ssis_job.CurrentRunStatus è sempre 'Idle' - anche quando so che il processo è in esecuzione. Non ha errori, ma riporta sempre inattivo.
Se l'utente è un amministratore, lo stato viene restituito come previsto.

Appartenenza al ruolo che dici?
Bene, ho aggiunto l'accesso al server SQL SERVER_USERNAME al ruolo msgd SQLAgentOperatorRole, che non sembra essere di aiuto.
Il proprietario del lavoro è un account di amministratore di sistema. Se questo è il problema, non sono sicuro su come aggirarlo.

Qualche idea?

risposta

3

È necessario aggiornare il processo chiamando il metodo Refresh() su ssis_job prima di controllare lo stato, quindi si otterranno le informazioni corrette.

+1

Il metodo [Aggiorna] (http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.sqlsmoobject.refresh.aspx) sul [Lavoro] (http: // msdn .microsoft.com/it-it/library/Microsoft.SqlServer.Management.Smo.Agent.Job.aspx) oggetto risolto per me. Grazie per segnalarlo. –

+0

L'aggiornamento() non funziona per me se lo chiamo subito dopo Start(). Funziona quando eseguo il debug del mio codice. Potrebbe essere un ritardo tra Start() e l'avvio del lavoro sql? – jambis

Problemi correlati