2010-02-04 17 views
5

J'ai un programme C# qui déclenche les tâches SQL Server Agent en utilisant les interfaces SQL Server Management Objects (SMO). Il ressemble à:Utilisation de SMO.Agent pour récupérer l'état d'exécution des travaux SQL - problème de sécurité

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

J'utilise SQL Server Authentication à ce stade de simplfy choses pendant que je travaille ça.

Maintenant, mon problème est que si l'SERVER_USERNAME fait partie de la « sysadmin » dbo rôle, ssis_job.CurrentRunStatus est toujours « Idle » - même si je sais que le travail est en cours d'exécution. Il ne se trompe pas, il signale toujours le ralenti.
Si l'utilisateur est un administrateur, le statut est renvoyé comme prévu.

Vous êtes membre?
Eh bien, j'ai ajouté la connexion SQL Server SERVER_USERNAME au rôle msdb SQLAgentOperatorRole, qui n'a pas semblé aider.
Le propriétaire du travail est un compte d'administrateur système. Si tel est le problème, je ne suis pas sûr de savoir comment le contourner.

Des idées?

Répondre

3

Vous devez actualiser le travail en appelant la méthode Refresh() sur ssis_job avant de vérifier l'état, puis vous obtiendrez les informations correctes.

+1

La méthode [Actualiser] (http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.sqlsmoobject.refresh.aspx) sur [Job] (http: // msdn L'objet .microsoft.com/fr-us/library/Microsoft.SqlServer.Management.Smo.Agent.Job.aspx) l'a corrigé pour moi. Merci de l'avoir signalé. –

+0

Le Refresh() ne fonctionne pas pour moi si je l'appelle juste après le début(). Cela fonctionne quand je débogue mon code. Serait-ce un délai entre le début() et le début du travail sql? – jambis