2010-08-10 3 views
3

Je veux vérifier si Broker Service est en cours d'exécution en utilisant du code et en fonction de l'état, démarrer sqldependency ou non. Comment puis je faire ça?Comment puis-je vérifier dans C# si le service Broker est activé dans SQL?

+1

Je ne suis pas familier avec eux, mais il y a quelques API disponibles qui enveloppent le courtier de service - je suis sûr que l'un ou plusieurs d'entre eux aura quelque chose à faire ce que vous voulez faire. http://stackoverflow.com/questions/2089184/net-api-for-sql-service-broker – FinnNk

Répondre

11

Vous pouvez faire une requête simple:

SELECT is_broker_enabled FROM sys.databases WHERE Name = 'mydatabasename'

Sinon, vous pouvez commencer le SqlDependency et piéger l'erreur que vous obtenez si elle n'a pas été activé, mais la première méthode est plus simple et mieux:

try { 
     SqlDependency.Start(); 
    } catch (InvalidOperationException ex) { 
     // If broker hasn't been enabled, you'll get the following exception: 
     // 
     // The SQL Server Service Broker for the current database is not enabled, and 
     // as a result query notifications are not supported. Please enable the Service 
     // Broker for this database if you wish to use notifications. 
    } 
+0

hmm, je veux utiliser C# pour cela, mais idéalement, je voudrais sauter quelque chose. N'y a-t-il pas une API pour ça? – IamDeveloper

+1

Il n'y a pas de méthode API officielle pour autant que je sache. Toute API que vous utiliseriez appelait simplement la requête SQL que j'ai indiquée de toute façon. Si vous ne voulez vraiment pas exécuter une simple requête SQL à partir de votre code, alors vous pouvez simplement intercepter l'exception déclenchée par SqlDependency.Start() - code simple ajouté à ma réponse. – Richard

Questions connexes