Sql-Server
服務代理在管理上被禁用
我剛剛恢復了一些使用服務代理從 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
在這些更改之後,一切都開始正常工作。