症状
请考虑以下情况:
-
在运行 SQL Server 2008 或 SQL Server 2008 R2 的服务器上,在 master 数据库中创建服务器证书。
-
在用户数据库上启用透明数据加密,其数据库加密密钥(DEK)使用服务器证书进行保护。
-
您删除了服务器证书。
-
对数据库启动新事务。
在这种情况下,新事务不会完成。 具体说来,事务将无限期地等待 WRITELOG 等待类型。 此外,数据库可能被标记为 "置疑"。笔记
-
即使从备份还原证书,此问题仍然存在。
-
出现此问题时,SQL Server 不会响应停止请求。 只能通过执行 "关闭" 命令和 NOWAIT 选项来关闭 SQL Server。
-
在某些情况下,可能会在 SQL Server 错误日志中记录类似于以下的错误:
日期时间 spid5s 错误:33111,严重性:16,状态:3。日期时间 Spid5s 找不到指纹为 "0xF9384BBA39E82B87D07A8D9AEBD58DDF55B715A3" 的服务器证书。日期时间 spid175 错误:15507,严重性:16,状态:1。日期时间 spid175 此操作所需的密钥似乎已损坏。日期时间 spid175 错误:3314,严重性:21,状态:4。日期时间 spid175 在数据库 "数据库名称" 中撤销已记录的操作时,在日志记录 ID (10637:3496:70)处出现错误。 通常,特定的故障在 Windows 事件日志服务中记录为错误。 从备份还原数据库或文件,或修复数据库。日期时间 spid18s 错误:9001,严重性:21,状态:5。日期时间 spid18s 数据库 "数据库名称" 的日志不可用。 检查事件日志中是否有相关错误消息。 解决任何错误,然后重新启动数据库。
解决方案
SQL Server 2008 的 Service pack 信息
若要解决此问题,请获取最新的 SQL Server 2008 服务包。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
968382 如何获取最新的 SQL Server 2008 服务包
SQL Server 2008 R2 的 Service pack 信息
若要解决此问题,请获取最新的 SQL Server 2008 R2 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2527041 如何获取最新的 SQL Server 2008 R2 服务包应用修补程序后,如果证书用于保护 DEK,则不允许用户删除服务器证书。
状态
Microsoft 已确认这是 "适用于" 部分中列出的 Microsoft 产品中的问题。此问题首先在 sql server 2008 R2 Service Pack 1 for SQL Server 2008 R2 中更正。此问题首先在 SQL Server 2008 Service Pack 3 中更正。
更多信息
此修补程序还可防止在以下情况下出现错误33111:
-
数据库已加密。
-
同一数据库已解密。
-
将删除加密数据库密钥的证书,但不会删除数据库密钥。
在此情况下重新启动运行 SQL Server 的计算机时,当数据库恢复时,将返回以下错误:
错误:33111,严重性:16,State:3Cannot 查找具有 thumbprint'0xA89FE581BD3D371CD3E41D48C9978163AB7055F7 "的服务器证书
将 Service Pack 3 (SP3)应用于 SQL Server 2008 后,在将该证书放在数据库密钥丢弃之前,会触发以下错误:
消息3716、Level 16、State 15、Line 2The 证书 ' MyServerCert ' 无法删除,因为它绑定到一个或多个数据库加密密钥。
若要解决此问题,请按照以下步骤解密数据库:
-
从备份重新创建证书。
-
使数据库联机。
-
在加密数据库中运行 "删除数据库加密密钥" 命令。
-
如果在这种情况下要执行的操作,请删除证书。
有关透明数据加密(TDE)的详细信息,请转到以下 MSDN 网站:
了解透明数据加密(TDE)有关软件更新术语的更多信息,请单击下面的文章编号以查看 Microsoft 知识库中的相应文章:
824684 用于描述 Microsoft 软件更新的标准术语的说明