检测SQL Server是否正在运行
我正在寻找一种方法来轮询不同的服务器并检查SQL服务器是否正常运行。 我正在用C#编写代码。 我并不特别关心单个数据库,只是SQL服务器正在运行并且响应迅速。
有任何想法吗?
System.Data.Sql.SqlDataSourceEnumerator
将返回当前正在运行的所有SQL Server实例。
MSDN链接
使用TCPClient类创建一个通用函数,该函数将TCP连接到给定的IP地址。
然后遍历要测试的服务器列表,并尝试打开到端口1433的连接。
如果需要特定服务器,请使用WMI。 如果您只想要所有可用的服务器:
SqlDataSourceEnumerator为您提供所有实例,但它们不一定在运行。 对于SQL的本地实例,您可以使用ServiceController对象,命名空间System.ServiceProcess。 服务名称是来自SqlDataSourceEnumerator的“MSSQL $”和“InstanceName”的连接。 设置ServiceController对象的ServiceName属性,你可以检查“Status”属性 – Stopped,Running,Pended等。因此,你可以过滤“Running”属性
我肯定会回答文森特的回答。 只要确保你正在关闭并妥善处理tcp连接等等。如果你想要的话,WMI对我来说似乎有些过分。