Sql-Server

服務代理在管理上被禁用

  • April 2, 2020

我剛剛恢復了一些使用服務代理從 LIVE 到登台的數據庫。

它不起作用,當我執行配置文件跟踪時,它只顯示與數據庫 id 1 和 4 相關的消息,出現問題,但我正在努力確定導致這種行為的原因。

在此處輸入圖像描述

在查看並重置所有與代理相關的數據庫 ID 後,我得到了修復。

我做的第一件事是看看我們有什麼(在源伺服器和目標伺服器上):

--=====================================================================
-- checking what we have and where we point to
--=====================================================================
SELECT @@SERVERNAME
-- my_target_server

USE [master]
GO
SELECT   [name]
,[is_broker_enabled] 
,[service_broker_guid]
FROM [sys].[databases] 
WHERE 1=1
 AND is_broker_enabled = 1
ORDER BY  NAME
GO

SELECT name,is_broker_enabled,service_broker_guid, is_trustworthy_on FROM sys.databases
order by 2 desc, 3 desc,  1

我看到需要更改的經紀人 ID:

--CD718202-CB34-4DCD-BADC-7800C5F2FF3D
 ALTER DATABASE ORCASTG SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE  
 ALTER DATABASE ORCASTG SET NEW_BROKER with rollback immediate
 ALTER DATABASE ORCASTG SET trustworthy on with rollback immediate

我為值得信賴的人感到抱歉,這就是它的設置方式,我從未改變它

在目標伺服器上:

在此處輸入圖像描述

在源伺服器上:

在此處輸入圖像描述

所以我在路由器內部更改了服務代理ID。

--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 my target server
GO

即使在上面的路由器中為數據庫設置了正確的 boker_ids 之後,我仍然沒有進行任何通信。

我不得不檢查路由器,我注意到我使用 IP 地址代替伺服器名稱,這工作正常,但我們對我們的域進行了一些更改,但不再工作,所以使用下面的測試,我首先確定它不再工作(連接),然後使用伺服器名稱相應地更改它。

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

在此處輸入圖像描述

在這些更改之後,一切都開始正常工作。

在此處輸入圖像描述

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