web-dev-qa-db-fra.com

La recherche DNS a échoué avec l'erreur: '11001 (aucun hôte de ce type n'est connu.)'

J'ai un serveur aux États-Unis qui devrait se connecter à l'un de nos serveurs en Europe via un courtier de service.

Le serveur en Europe est un groupe de disponibilité dont l'auditeur s'appelle sqlst.

lorsque j'exécute la commande suivante dans le serveur USA:

 declare @sql varchar(1008)
 set @sql = 'powershell.exe -command Test-NetConnection sqlst -port 4022'

 EXEC xp_cmdshell @sql

Je reçois un message merveilleux disant que toute la connectivité va bien comme vous pouvez le voir sur l'image ci-dessous: le Ip addresses ont été masqués pour protéger l'innocent.

enter image description here

Pourtant,

quand je vais à mon USA Server Dans la bonne base de données, et j'exécute la requête suivante after I have been told that the broker has not worked:

-- Error messages in the queue
SELECT * 
FROM sys.transmission_queue

where service_contract_name = 'ORCACOLAContract'
order by enqueue_time desc

Je reçois la raison suivante comme pourquoi elle a échoué:

DNS lookup failed with error: '11001(No such Host is known.)'.

Le compte de service dans le serveur Europe a été ajouté à Kerberos et tous les serveurs liés fonctionnent bien .

En regardant le sql error log Je ne vois aucun message d'erreur correspondant.

Je ne suis pas sûr que cela est lié à - courtier de service et toujours

J'ai fait tout cela - serveur lié au serveur fonctionnant bien.

Je n'ai pas accès en dehors de sql server à la machine américaine. À l'intérieur SQL Server, je suis sysadmin.

Comme je l'ai dit ci-dessus quand je courais ce qui suit, je reçois une bonne réponse:

declare @sql varchar(1008)
 set @sql = 'powershell.exe -command Test-NetConnection sqlst -port 4022'
 EXEC xp_cmdshell @sql

Lorsque je remplace le nom du serveur par son adresse IP et exécutez-le:

 declare @sql varchar(1008)
 set @sql = 'powershell.exe -command Test-NetConnection 200.1.0.xxx -port 4022'
 EXEC xp_cmdshell @sql

J'ai aussi un retour positif.

Cependant, lorsque j'exécute nslookup à l'aide de l'adresse IP de sqlst - 200.1.0.xxx i Obtenir l'erreur ci-dessous:

declare @sql varchar(1008)
 set @sql = 'powershell.exe -command $ns = (nslookup.exe 200.1.0.xxx )[-4..-3]
$ns'
 EXEC xp_cmdshell @sql

enter image description here

Fondamentalement, cela dit, domain controller Impossible de trouver the sqlst ip address

Je n'ai aucun moyen de courir ipconfig/flushdns Mais j'ai exécuté la commande suivante à la place:

 declare @sql varchar(1008)
 set @sql = 'powershell.exe -command Clear-DnsClientCache'
 EXEC xp_cmdshell @sql
1
Marcello Miorelli

ce problème a été en fait causé par une manière particulière que les domaines de confiance en Europe ont été configurés (au-delà de la portée de cette question), cependant, à l'aide des scripts que vous pouvez voir sur la question initiale, puis de travailler avec les sysadmins, puis de trouver le serveur. Les noms qui pourraient être authentifiés aux deux extrémités (source et destination) résolus le cas - après modification des routeurs selon cet exemple :

--targer server 
USE [cola]
GO
IF  EXISTS (SELECT * FROM sys.routes WHERE name = N'rou_ORCARoute')
DROP ROUTE [rou_ORCARoute]

CREATE ROUTE [rou_ORCARoute]   
WITH  SERVICE_NAME  = N'svc_SendStatusChangeService' ,  
BROKER_INSTANCE  = N'CD718202-CB34-4DCD-BADC-7800C5F2FF3D' ,  --BROKER ID OF ORCASTG
ADDRESS  = N'TCP://mysourceserver.mycompany.com:4022' --IP address of my source server
GO

--source server     
USE [ORCASTG]
GO
IF  EXISTS (SELECT * FROM sys.routes WHERE name = N'rou_CAUKRoute')
DROP ROUTE [rou_CAUKRoute]

CREATE ROUTE [rou_CAUKRoute]   
       WITH  SERVICE_NAME  = N'svc_receiveStatusChangeService' ,  
       BROKER_INSTANCE  = N'452711F3-60CD-47E6-BFA4-3BD8C9D6AB56' ,  --BROKER_ID OF COLA  
       ADDRESS = N'TCP://mytargetserver.mycompany.com:4022'--IP address of target server
GO
0
Marcello Miorelli