症状
假设你有一些透明的数据加密(TDE)数据库,这些数据库是使用 Microsoft SQL Server 2012 或 SQL Server 2014 中的可扩展密钥管理(EKM)提供程序加密的。 当你在不稳定的网络连接上运行高负载插入查询时,你会发现 TDE 数据库不可用,并显示 "恢复挂起" 状态。 您会收到以下错误:
<日期> <时间> spid1s 无法打开加密提供程序 "<EKM 提供程序名称>" 的会话。 提供程序错误代码:5。 (身份验证失败-请参阅 EKM 提供程序了解详细信息)<日期> <Time> spid125 错误:9001,严重性:21,状态:1。<日期> <时间> spid125 数据库 "<DB 名称>" 的日志不可用。 检查事件日志中是否有相关错误消息。 解决任何错误,然后重新启动数据库。<日期> <时间> spid125 在数据库 "<DB 名称>" 中撤消记录的操作时,在日志记录 ID (1183:136:350)处出现错误。 通常,特定的故障在 Windows 事件日志服务中记录为错误。 从备份还原数据库或文件,或修复数据库。由于例程 "XdesRMReadWrite:: RollbackToLsn" 中的错误3314, <日期> <时间> spid62 数据库 <DB 名称> 已关闭。 将在数据库的所有连接终止后尝试非快照数据库重启。
解决方案
应用修补程序后,TDE 数据库将在网络中断期间尝试使用缓存的数据库加密密钥。 这将阻止其关闭。在 SQL Server 的以下累积更新中,按设计行为已更改。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累积更新9 /en-us/help/2931078
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新: