I want to check if Broker Service is running using code and depending on the status, start sqldependency or not. How can I do that?
+1
A:
You can do a simple query:
SELECT is_broker_enabled FROM sys.databases WHERE Name = 'mydatabasename'
Alternatively you can just start the SqlDependency and trap the error you get if it hasn't been enabled, but the first method is simpler and better:
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.
}
Richard
2010-08-10 08:14:17
hmm, I want to use c# for that, but ideally would like to skip selecting something. Isn't there some API for that?
StupidDeveloper
2010-08-10 08:34:22
There is no official API method as far as I'm aware. Any API you used would simply be calling the SQL query I indicated anyway. If you really don't want to execute a simple SQL query from your code, then you can just trap the exception raised by SqlDependency.Start() - simple code added to my answer.
Richard
2010-08-10 09:38:33