web-dev-qa-db-ja.com

DNSルックアップは次のエラーで失敗しました: '11001(そのようなホストは不明です。)'

アメリカにサーバーがあり、ヨーロッパのサーバーの1つにService Brokerを介して接続する必要があります。

ヨーロッパのサーバーは可用性グループであり、そのリスナーはsqlstと呼ばれます。

uSAサーバーで次のコマンドを実行すると、

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

 EXEC xp_cmdshell @sql

下の画像を見るとわかるように、すべての接続が正常であるという素晴らしいメッセージが表示されます:Ip addressesは、無実を保護するためにマスクされています。

enter image description here

しかしながら、

正しいデータベースの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を見ると、関連するエラーメッセージは表示されません。

これが service brokerとalwayson に関連していることはわかりません

私は これらすべてを行っています -リンクサーバーは正常に動作しています。

USAマシンの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

私はまた、ポジティブなリターンを得ます。

ただし、nslookup-200.1.0.xxxの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

enter image description here

基本的には、domain controllerthe sqlst ip addressを見つけることができません

ipconfig/flushdnsを実行する方法はありませんが、代わりに次のコマンドを実行しました。

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

この問題は実際には、信頼できるドメインUS-Europeが(この質問の範囲を超えて)構成された特定の方法によって引き起こされましたが、元の質問で確認できるスクリプトを使用してから、sysadminsを操作し、サーバーを見つけました両端(送信元と宛先)で認証された名前がケースを解決しました-ルーターを変更した後 この例

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