如何判断SQL Server是否是集群的,而不与之交互,最好是通过注册表

本文关键字:交互 注册表 判断 何判断 SQL 是否是 Server | 更新日期: 2023-09-27 17:58:12

我需要在不实际连接并运行查询的情况下,查明给定的SQL Server实例(其实例名为)是否已群集。

选项:

  1. SqlDataSourceEnumerator.Instance.GetDataSources():即使它工作,它也非常慢。同样,它并不总是有效的(返回空枚举??)
  2. 注册表-我确信信息在那里,但不知道在哪里
  3. 还没有尝试WMI,因为我相信有一个更简单的解决方案(例如注册表…)

如何判断SQL Server是否是集群的,而不与之交互,最好是通过注册表

TSQL:

SELECT 'IsClustered', SERVERPROPERTY('IsClustered')

Powershell:

$s = Get-WmiObject -Class Win32_SystemServices -ComputerName $server
if ($s | select PartComponent | where {$_ -like "*ClusSvc*"}) { Write-Output "$server is Clustered" }
else { Write-Output "$server is Not clustered" }

参考http://www.sqlservercentral.com/Forums/Topic1182082-1351-1.aspx

有可以检查的注册表项请参阅https://www.mssqltips.com/sqlservertip/3440/registry-check-pointing-in-a-windows-cluster-to-bring-sql-server-online/详细信息。

然而,TSQL和powershell比远程注册表调用快得多。如果您可以与实例建立ADO.NET连接,那么TSQL方法是迄今为止最快的方法。