web-dev-qa-db-fra.com

Où puis-je trouver le nom DNS associé à l'auditeur d'un groupe de disponibilité?

J'ai un groupe de disponibilité qui a un auditeur .

Le écouteur s'appelle SQLPROD comme vous pouvez le voir sur l'image ci-dessous. Il utilise Port 14

enter image description here

Quand j'exécute le script suivant:

ALTER AVAILABILITY GROUP [SQLPROD_AG]
    ADD LISTENER 'SQLPROD' (WITH IP (('200.1.1.199', '255.255.254.0')));

Je reçois ce message d'erreur (quand il existe déjà):

MSG 19477, niveau 16, État 48, ligne 4 Le groupe de disponibilité 'SQLProd_ag' a déjà un auditeur avec le nom DNS 'SQLProd_ag_SqlProd'. Les groupes de disponibilité ne peuvent avoir qu'un seul auditeur. Utilisez l'auditeur existant ou déposez l'auditeur existant et créez-en un nouveau.

utilisation de toujours sur les groupes de disponibilités Vues de catalogue Je n'ai rien trouvé révélateur:

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

Tout semble bien:

enter image description here

lorsque j'utilise PowerShell, les commandes suivantes:

Import-Module FailoverClusters  
cls
Get-ClusterResource 

enter image description here

Où puis-je trouver où le nom SQLPROD_AG_SQLPROD est? Puis-je changer ce nom?

3
Marcello Miorelli

Le message renvoyé n'est pas précis car il se réfère au nom de la ressource de nom de réseau (sqlprod_ag_sqlprod), et il est incorrect de manière incorrecte comme nom DNS. Vous pouvez voir que la ressource de nom de réseau dans votre AG est nommée SQLPROD_AG_SQLPROD, et c'est ce que cela fait référence à.

Cela devrait vraiment dire quelque chose comme ", le groupe de disponibilité" SQLProd_ag 'a déjà un auditeur avec une ressource de nom de réseau de "SQLProd_ag_SqlProd". " Lorsque l'auditeur est créé, la ressource de nom de réseau associée est créée avec un nom selon la syntaxe suivante:

<Availability Group Name>_<DNS name>

Étant donné qu'une ressource avec ce nom existe déjà, elle ne peut pas la créer.

De plus, les traits de soulignement ne sont pas autorisés dans les noms DNS, le nom indiqué dans le message d'erreur n'est évidemment pas un nom DNS.

Pour voir le nom DNS associé à l'écouteur, vous pouvez utiliser SQL Server Management Studio et afficher les propriétés de l'écoute de l'écoute ou utiliser un administrateur de cluster de basculement et afficher les propriétés du nom du réseau.

La commande PowerShell suivante retournera les noms et les noms DNS de toutes les ressources de nom de réseau qui ne sont pas des ressources de cluster de base.

Get-ClusterResource | Where-Object {$_.isCoreResource -eq $false -and $_.ResourceType -eq "Network Name" } | Get-ClusterParameter | Where-Object { $_.Name -eq "DnsName" } | Select ClusterObject, Value

Si vous souhaitez filtrer par un nom AG spécifique, vous utiliseriez Where-Object {$_.OwnerGroup -eq "SQLPROD_AG" -and $_.ResourceType -eq "Network Name' } Pour la première clause WHERE.

Avec T-SQL, vous pouvez obtenir ceci à partir des vues liées à AG. Pour répertorier tous:

select ag.name, agl.dns_name from sys.availability_group_listeners agl
join sys.availability_groups ag ON ag.group_id = agl.group_id

Pour répertorier uniquement celui de SQLProd_ag, vous devez simplement ajouter une clause suivante:

WHERE ag.name = 'SQLPROD_AG'

Si vous souhaitez utiliser un nom DNS différent pour l'auditeur, vous devez déposer l'auditeur actuel et créer un nouveau.

ALTER AVAILABILITY GROUP SQLPROD_AG REMOVE LISTENER 'SQLPROD'

Voir Supprimer un auditeur de groupe de disponibilité .

2
Tony Hinkle