web-dev-qa-db-ja.com

可用性グループのリスナーに関連付けられているDNS名はどこにありますか?

listener を持つ可用性グループがあります。

listenerSQLPRODと呼ばれます。 ポート1433 を使用します

enter image description here

次のスクリプトを実行すると:

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」のリスナーがあります。可用性グループに含めることができるリスナーは1つだけです。既存のリスナーを使用するか、既存のリスナーを削除して新しいリスナーを作成します。

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

すべて問題ないようです:

enter image description here

powershellを使用する場合、次のコマンド:

Import-Module FailoverClusters  
cls
Get-ClusterResource 

enter image description here

SQLPROD_AG_SQLPRODという名前はどこにありますか?この名前を変更できますか?

3

返されるメッセージは、ネットワーク名リソース(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句にWhere-Object {$_.OwnerGroup -eq "SQLPROD_AG" -and $_.ResourceType -eq "Network Name' }を使用します。

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'

可用性グループリスナーの削除 を参照してください。

2
Tony Hinkle