sql-server - SQL Server 2016 的服务代理。“is_activation_enabled”一直关闭
问题描述
服务代理似乎在为我们工作并处理大多数消息,除了is_activation_enabled从 0 切换到 1 并在一天中自行返回。我们找不到任何解释。为什么这样做?这是否意味着有问题?is_activation_enabled需要保持开启(=1),因为我们有一个activation_procedure。我们通过运行这个查询来观察这个标志:
SELECT * FROM sys.service_queues
有人可以解释可能导致这种情况的原因吗?
注意:我知道有害消息可以禁用队列。请不要将我的问题与 is_receive_enabled 或其他标志之一混淆。我要问的唯一标志是is_activaton_enabled。
我可以通过运行此查询来查看队列何时主动处理消息,select * from sys.dm_broker_queue_monitors
但是主动处理消息和启用消息处理的概念是不同的。
希望服务经纪人专家在某个地方!
我们的 Microsoft SQL Server 2016 (SP1) (KB3182545) 版本 - 13.0.4001.0 (X64) 2016 年 10 月 28 日 18:17:30 版权所有 (c) Microsoft Corporation Enterprise Edition:Windows Server 2012 上基于内核的许可(64 位) R2 标准 6.3(内部版本 9600:)(管理程序)
解决方案
我的第一个想法是扩展活动会议,但我没有看到合适的活动。但是,我认为您正在寻找 DDL 触发器。考虑以下:
create trigger tr_catch_queue_alter
on DATABASE
for alter_queue
AS
BEGIN
select EVENTDATA();
END
触发器的主体不是您想要的;您将希望分解它输出的 XML 并将其存储在某个表中。当我刚才在本地实例上运行它时,我得到了:
<EVENT_INSTANCE>
<EventType>ALTER_QUEUE</EventType>
<PostTime>2018-09-12T20:17:22.497</PostTime>
<SPID>54</SPID>
<ServerName>«redacted»</ServerName>
<LoginName>«redacted»</LoginName>
<UserName>dbo</UserName>
<DatabaseName>«redacted»</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>«redacted»</ObjectName>
<ObjectType>QUEUE</ObjectType>
<TSQLCommand>
<SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
<CommandText>alter queue «redacted» with activation (status = on, execute as owner, procedure_name = dbo.«redacted»)
</CommandText>
</TSQLCommand>
</EVENT_INSTANCE>
(显然«redacted»
这只是我的特定环境的敏感数据;当你运行它时,你会得到实际的细节)。
注意:这只是第一步。alter queue
但是从上面,你可以看到你得到了关于语句的以下信息:
- 什么时候
- 来自什么主机
- 通过谁
- 实际声明
因此,即使这是第一步,我认为它有可能成为一个相当大的一步。
推荐阅读
- reactjs - Babel 无法识别“从 './Component' 导出组件”
- javascript - 使用 WebRTC 时如何使用户 IP 安全?
- python - 如何打破 requests.exceptions.MissingSchema?
- java - 如何使用命令行中包含的外部库创建 jar?
- python - How to create an internally computed filed in SqlAlchemy?
- c++ - Fixed parameters in a function, c++
- flutter - Apply posterize filter on image in flutter
- reactjs - react_table__WEBPACK_IMPORTED_MODULE_2___default(...) is not a function
- amazon-web-services - 我可以使用自托管 Web-API 作为 AWS API Gateway 的后端吗?
- linux - CentOS 和 Tomcat