Sql-Server

ComputerNamePhysicalNetBIOS 和“目前主機伺服器”顯示不同的機器

  • April 19, 2018

我在兩個節點(比如名稱 X 和 Y)Windows 伺服器集群(Windows Server 2008 R2 Enterprise)上有一個 SQL Server 2008 R2 實例。

兩個節點上的伺服器管理器都將“X”顯示為“目前主機伺服器”。

但是,當我執行 ServerProperty('ComputerNamePhysicalNetBIOS')它時,它返回'Y'應該是目前活動節點。

如果我 RDP 到 SQL 的 IP,它確實連接到 Y。

  • 哪一個是正確的?
  • 為什麼伺服器管理器將 X 顯示為活動節點?

此外,既不ServerProperty('MachineName')返回X也不返回。Z 是兩台電腦的名稱。它代表什麼?Y``'Z'

根據 ComputerNamePhysicalNetBIOS 的 BOL(如上返回 Y):

如果 SQL Server 實例位於故障轉移群集中,並且您想要獲取故障轉移群集實例的名稱,請使用 MachineName 屬性。

那麼,為什麼它會返回 Z?

這些機器不是虛擬化的,它們是物理的。這是否意味著 Z 是集群的虛擬伺服器名稱?“目前主機伺服器”似乎是指“集群中的活動節點”(來自線上論壇)。我不完全確定兩個 FCI 和一個在每個節點上處於活動狀態是什麼意思。

Windows Server 故障轉移群集至少需要兩台電腦(虛擬機或物理機)。讓我們將這些稱為Node01Node02

Windows Server 故障轉移群集角色的安裝過程的一部分定義了群集的名稱。出於我們的目的,我們稱之為MyCluster.

創建MyCluster完成後,您可以將 SQL Server 實例作為獨立的“集群資源組”添加到集群中。我們將我們的 SQL Server 集群實例稱為MyClusterSQL\INSTANCE.

因此,為了澄清,我們有:

╔════════════════════════╦═══════════════════════╗
║項目║名稱║
╠════════════════════════╬═══════════════════════╣
║ 電腦 ║ Node01 和 Node02 ║
║ 集群虛擬伺服器 ║ MyCluster ║
║ SQL Server 實例 ║ MyClusterSQL\INSTANCE ║
╚════════════════════════╩═══════════════════════╝

現在,如果您執行SELECT SERVERPROPERTY('ComputerNamePhysicalNetbios')它,它將返回Node01或者Node02取決於託管 SQL Server 實例的電腦。

SELECT SERVERPROPERTY('MachineName');將返回MyClusterSQL。SERVERPROPERTY的Microsoft Docs 對“MachineName”這樣說:

執行伺服器實例的 Windows 電腦名稱。

對於群集實例,即在 Microsoft 群集服務上的虛擬伺服器上執行的 SQL Server 實例,它返回虛擬伺服器的名稱。

SELECT @@SERVERNAME;將返回MyClusterSQL\INSTANCE

伺服器管理器始終返回您連接到的電腦的名稱。在我們的例子中,這將是Node01Node02。如果 SQL Server 群集實例在 上執行Node02,並且您使用遠端桌面連接到 MyClusterSQL 伺服器,伺服器管理器將顯示Node02,即使您連接到MyClusterSQL

社區維基回答

Z 應該是集群的虛擬伺服器名稱。我不使用伺服器管理器,所以我不知道“目前主機伺服器”是什麼意思,以及它是否應該代表 SQL Server 集群實例(不同於 Windows 集群)的活動節點。

如果您有兩個單獨的 FCI,並且每個節點上目前有一個處於活動狀態,您希望“目前主機伺服器”說什麼?伺服器管理器是分別代表每個 SQL Server 群集還是僅代表 Windows 群集?

我知道這些是物理機器——這是一個完全不同的概念。“虛擬伺服器名稱”是 SQL Server 故障轉移集群實例的外部名稱——它是 SSMS 和您的應用程序連接到 SQL Server 的方式,無論集群實例目前使用哪個物理節點。

我懷疑“目前主機伺服器”是完全不同的東西,它與Windows 集群有關,而不是與位於 Windows之上的SQL Server 故障轉移集群實例有關。

ComputerNamePhysicalNetBIOS將為您提供目前活動節點的物理名稱,vsMachineName將為您提供集群的虛擬名稱。

引用自:https://dba.stackexchange.com/questions/93904