替代方法是为服务代理创建主密钥。
首先通过右键单击队列并查看传输队列来检查您的服务代理队列,或者简单地使用此查询
SELECT *, casted_message_body = CASE message_type_name WHEN 'X'
THEN CAST(message_body AS NVARCHAR(MAX))
ELSE message_body
END
FROM [DATABASE_NAME].[sys].[transmission_queue]
如果您在此处找到任何数据,则 transmission_status 列将有此原因。
如果经纪人没有发挥其作用,我将使用以下查询创建 NEW_BROKER
USE [master]
ALTER DATABASE [DATABASE_NAME] SET NEW_BROKER
然后启用 BROKER 并将 TRUSTWORTHY 设置为 ON
ALTER DATABASE DATABASE_NAME SET ENABLE_BROKER;
ALTER DATABASE DATABASE_NAME SET TRUSTWORTHY ON;
最后,删除主密钥并创建新主密钥并使用新密码加密:
ALTER AUTHORIZATION ON DATABASE::DATABASE_NAME TO [SA];
DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '79HGKJ67ghjgk^&*^fgj'
GO
密码可以是用户定义的字母数字和符号的混合。
如果上述任何步骤的运行时间较长,那么我建议您停止查询并重新打开 SQL 管理器并重试。它应该运作良好!