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

有任何想法吗?

===============>>#1 票数:5 已采纳

蛮力解决方案是尝试在每台服务器上启动与数据库的连接。 这将告诉你它是否正在运行,尽管你可能有超时问题。

更优雅(但更难以......总是这样?)解决方案是使用WMI连接到远程机器并查明SQL服务器进程是否正在运行。

===============>>#2 票数:3

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

===============>>#3 票数:2

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

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

===============>>#4 票数:2

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

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

===============>>#5 票数:2

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

===============>>#6 票数:0

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

  ask by steve_mtl translate from so

未解决问题?本站智能推荐: