下面是MSDN关于SYS.dm_hadr_instance_node_map 的解释,我就不在翻译了
For every instance of SQL Server that hosts an availability replica that is joined to its AlwaysOn availability group, returns the name of the Windows Server Failover Clustering (WSFC) node that hosts the server instance. This dynamic management view has the following uses:
•This dynamic management view is useful for detecting an availability group with multiple availability replicas that are hosted on the same WSFC node, which is an unsupported configuration that could occur after an FCI failover if the availability group is incorrectly configured. For more information, see Failover Clustering and AlwaysOn Availability Groups (SQL Server).
•When multiple SQL Server instances are hosted on the same WSFC node, the Resource DLL uses this dynamic management view to determine the instance of SQL Server to connect to.
举例来说
Env
===
Nodes:
SQL108W2K8R21
SQL108W2K8R22
SQL108W2K8R23
Default instance
SQL Server 2012 SP1 RTM
Availability group :agTest1 and agTest2
AGTest1:
SQL108W2K8R21
SQL108W2K8R22
SQL108W2K8R23
AGTest2:
SQL108W2K8R21
SQL108W2K8R22
那么SYS.dm_hadr_instance_node_map 返回值如下
相应的ag_resource_id我们可以从sys.dm_hadr_name_id_map找到
DMV SYS.dm_hadr_instance_node_map会从下面的注册表中取值
如果您的DMV返回NULL,请检查注册表HKEY_LOCAL_MACHINE\Cluster\HadrAgNameToIdMap,如果发现有legacy/orphan的键值存在,将他们删除。为了以防万一,请先备份。
之后再次运行DMV就可以了
Alwayson--SYS.dm_hadr_instance_node_map 返回null