症状
假设你有一个数据库,其中包含通过在 Microsoft SQL Server 2014 中设置选项READ_COMMITTED_SNAPSHOT 启用的 "读取已提交快照隔离(RCSI)"。 当您在用户事务上下文外的同一语句中访问内存优化表和内存优化表变量时,操作可能失败。 此外,你可能会收到以下错误:
消息41359。 使用已提交的已读隔离级别访问内存优化的表的查询,当数据库选项 READ_COMMITTED_SNAPSHOT 设置为 "打开" 时,无法访问基于磁盘的表。 使用表提示(如 WITH (快照))为内存优化的表提供支持的隔离级别。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
要解决此问题,请使用以下解决方法:
-
对表变量使用带有(快照)的表提示。
-
将 "数据库" 选项设置 MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT 为 "开"。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。