在哪裡可以找到與可用性組的偵聽器關聯的 DNS 名稱?
我有一個具有listener的可用性組。
當我執行以下腳本時:
ALTER AVAILABILITY GROUP [SQLPROD_AG] ADD LISTENER 'SQLPROD' (WITH IP (('200.1.1.199', '255.255.254.0')));
我收到此錯誤消息(當它已經存在時):
消息 19477,級別 16,狀態 48,第 4 行可用性組“SQLPROD_AG”已經有一個 DNS 名稱為“SQLPROD_AG_SQLPROD”的偵聽器。可用性組只能有一個偵聽器。使用現有的偵聽器,或刪除現有的偵聽器並創建一個新偵聽器。
使用Always On 可用性組目錄視圖我沒有發現任何啟示:
select * from sys.dm_hadr_auto_page_repair select * from sys.dm_hadr_cluster_networks select * from sys.dm_hadr_availability_group_states select * from sys.dm_hadr_database_replica_cluster_states select * from sys.dm_hadr_availability_replica_cluster_nodes select * from sys.dm_hadr_database_replica_states select * from sys.dm_hadr_availability_replica_cluster_states select * from sys.dm_hadr_instance_node_map select * from sys.dm_hadr_availability_replica_states select * from sys.dm_hadr_name_id_map select * from sys.dm_hadr_cluster select * from sys.dm_tcp_listener_states select * from sys.dm_hadr_cluster_members select * from sys.availability_databases_cluster select * from sys.availability_groups_cluster select * from sys.availability_group_listener_ip_addresses select * from sys.availability_read_only_routing_lists select * from sys.availability_group_listeners select * from sys.availability_replicas select * from sys.availability_groups
一切似乎都很好:
當我使用 powershell 時,以下命令:
Import-Module FailoverClusters cls Get-ClusterResource
我在哪裡可以找到名字在哪裡
SQLPROD_AG_SQLPROD
?我可以更改此名稱嗎?
返回的消息不准確,因為它指的是它將為網路名稱資源 (SQLPROD_AG_SQLPROD) 提供的名稱,並且它被錯誤地標記為 DNS 名稱。你可以看到你的AG中的網路名稱資源被命名為SQLPROD_AG_SQLPROD,這就是它所指的。
它確實應該這樣說,“可用性組 ‘SQLPROD_AG’ 已經有一個偵聽器,其網路名稱資源為 ‘SQLPROD_AG_SQLPROD’。” 創建偵聽器時,將根據以下語法使用名稱創建關聯的網路名稱資源:
<Availability Group Name>_<DNS name>
由於具有該名稱的資源已經存在,因此無法創建它。
此外,DNS 名稱中不允許使用下劃線,因此錯誤消息中給出的名稱顯然不是 DNS 名稱。
要查看與偵聽器關聯的 DNS 名稱,您可以使用 SQL Server Management Studio 並查看偵聽器的屬性,或使用故障轉移群集管理器並查看網路名稱的屬性。
以下 PowerShell 命令將返回不是核心集群資源的所有網路名稱資源的名稱和 DNS 名稱。
Get-ClusterResource | Where-Object {$_.isCoreResource -eq $false -and $_.ResourceType -eq "Network Name" } | Get-ClusterParameter | Where-Object { $_.Name -eq "DnsName" } | Select ClusterObject, Value
如果您想按特定的 AG 名稱進行過濾,您將使用
Where-Object {$_.OwnerGroup -eq "SQLPROD_AG" -and $_.ResourceType -eq "Network Name' }
第一個 WHERE 子句。使用 T-SQL,您可以從 AG 相關視圖中獲取此資訊。列出所有:
select ag.name, agl.dns_name from sys.availability_group_listeners agl join sys.availability_groups ag ON ag.group_id = agl.group_id
要僅列出 SQLPROD_AG 的一個,您只需添加一個 WHERE 子句:
WHERE ag.name = 'SQLPROD_AG'
如果您想為偵聽器使用不同的 DNS 名稱,您必須刪除目前偵聽器並創建一個新偵聽器。
ALTER AVAILABILITY GROUP SQLPROD_AG REMOVE LISTENER 'SQLPROD'
請參閱刪除可用性組偵聽器。