我对 SQL 和数据库管理还很陌生,仍在学习。我们长时间收到一个 SQL 错误,据我们所知,这对我们的应用程序没有影响。所以我们把这个放在第二位。现在它开始困扰我,我想知道发生了什么。
Service Broker needs to access the master key in the datasbase "xxx" Error Code:26. The Master Key hast to exist and the service Master Key encryption is required.
我检查了我们的完整 SQL 日志,发现错误是无缘无故发生的,我的意思是当时没有安装任何更新,我们的应用程序也没有发布任何新版本。所以对我来说,它是“无缘无故的”,至少我现在看不到任何东西。这一切都是几周前开始的,也许我记不清了。
服务代理怎么可能需要访问主密钥,而我们的数据库中甚至没有密钥。我们从来没有创建过密钥。
有人能解释一下如何使用密钥吗?我的意思是创建就可以了:
USE xxx;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxx';
GO
任何帮助都会被立即点赞。
答案1
我在使用代理的数据库上遇到了同样的错误,该数据库已移动到另一台服务器,因此我写下我的答案,希望它能对某人有所帮助。
当您移动使用带有加密密钥的代理的数据库时,似乎您需要重新创建主密钥,以便代理能够使用它。
首先,打开主密钥,然后重新创建它。
OPEN MASTER KEY DECRYPTION BY PASSWORD ='SomeStrongPassword'
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD ='SomeStrongPassword'
这为我解决了这个问题。