首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务代理在管理上禁用。

服务代理在管理上禁用。
EN

Database Administration用户
提问于 2020-04-02 16:55:01
回答 1查看 291关注 0票数 0

我刚刚恢复了一些使用服务经纪人的数据库,这些数据库使用的是LIVE。

它不起作用,当我让一个轮廓轨迹运行时,它只显示与数据库id 1和4相关的消息,有些地方不对劲,但我很难确定是什么导致了这种行为。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-04-02 16:55:01

在检查和重置所有代理相关的数据库ID之后,我修复了它。

我做的第一件事是看看我们拥有什么(在源服务器和目标服务器上):

代码语言:javascript
复制
--=====================================================================
-- 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

我看到经纪人身份需要更改:

代码语言:javascript
复制
--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

对于信得过,我很抱歉,它就是这样被设置的,我从来没有改了

在目标服务器上:

在源服务器上:

因此,我在路由器内部更改了service。

代码语言:javascript
复制
--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地址代替服务器名,这很好,但是我们在域上做了一些更改,这不再有效,所以使用下面的测试,我首先确定它不再工作(连接),然后使用服务器名称相应地更改它。

代码语言:javascript
复制
 declare @sql varchar(1008)
 set @sql = 'powershell.exe -command Test-NetConnection 200.1.0.198.:4022'
 EXEC xp_cmdshell @sql

在这些变化之后,一切都开始正常工作了。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/264181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档