Sql-Server

DNS 查找失敗並出現錯誤:“11001(不知道這樣的主機。)”

  • April 12, 2020

我在美國有一台伺服器,應該通過服務代理連接到我們在歐洲的一台伺服器。

歐洲的伺服器是一個可用性組,其偵聽器稱為sqlst

當我在美國伺服器中執行以下命令時:

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

EXEC xp_cmdshell @sql

我收到一條很棒的消息,說所有連接都很好,如下圖所示:Ip addresses已蒙面以保護無辜者。

在此處輸入圖像描述

然而,

當我進入USA Server正確的數據庫時,我執行以下查詢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

我得到以下失敗的原因:

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

伺服器中的服務帳戶Europe已添加到Kerberos所有連結的伺服器工作正常

查看sql error log我沒有看到任何相關的錯誤消息。

我不確定這與服務代理和alwayson有關

我已經完成了所有這些- 連結伺服器工作正常。

sql server在美國機器之外無法訪問。我在 SQL Server 內部sysadmin

正如我上面所說,當我執行以下命令時,我得到了很好的響應:

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

當我將伺服器名稱替換為其 IP 地址並執行它時:

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

我也得到了積極的回報。

但是,當我使用- 200.1.0.xxxnslookup的 IP 地址執行時,出現以下錯誤:sqlst

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

在此處輸入圖像描述

基本上就是說,domain controller找不到the sqlst ip address

我無法執行ipconfig/flushdns,但我執行了以下命令:

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

此問題實際上是由配置受信任域 US-Europe 的特定方式引起的(超出此問題的範圍)但是,使用您可以在原始問題上看到的腳本,然後與系統管理員合作,然後找到伺服器可以在兩端(源和目標)進行身份驗證的名稱解決了這種情況 - 在根據此範例更改路由器之後:

--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

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