Sql-Server
DNS 查找失敗並出現錯誤:“11001(不知道這樣的主機。)”
我在美國有一台伺服器,應該通過服務代理連接到我們在歐洲的一台伺服器。
歐洲的伺服器是一個可用性組,其偵聽器稱為
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.xxx
nslookup
的 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