检测SQL Server是否正在运行

我正在寻找一种方法来轮询不同的服务器并检查SQL服务器是否正常运行。 我正在用C#编写代码。 我并不特别关心单个数据库,只是SQL服务器正在运行并且响应迅速。

有任何想法吗?

System.Data.Sql.SqlDataSourceEnumerator将返回当前正在运行的所有SQL Server实例。
MSDN链接

使用TCPClient类创建一个通用函数,该函数将TCP连接到给定的IP地址。

然后遍历要测试的服务器列表,并尝试打开到端口1433的连接。

如果需要特定服务器,请使用WMI。 如果您只想要所有可用的服务器:

http://support.microsoft.com/kb/q287737/

SqlDataSourceEnumerator为您提供所有实例,但它们不一定在运行。 对于SQL的本地实例,您可以使用ServiceController对象,命名空间System.ServiceProcess。 服务名称是来自SqlDataSourceEnumerator的“MSSQL $”和“InstanceName”的连接。 设置ServiceController对象的ServiceName属性,你可以检查“Status”属性 – Stopped,Running,Pended等。因此,你可以过滤“Running”属性

我肯定会回答文森特的回答。 只要确保你正在关闭并妥善处理tcp连接等等。如果你想要的话,WMI对我来说似乎有些过分。