C# SQL Server内存中OLTP和会话隔离设置为快照的ASP.NET会话状态

C# SQL Server内存中OLTP和会话隔离设置为快照的ASP.NET会话状态,c#,asp.net-mvc,session-state,sql-server-2017,memory-optimized-tables,C#,Asp.net Mvc,Session State,Sql Server 2017,Memory Optimized Tables,我们在FrameworkV4.7.2上部署了一个新的构建。我们还部署了异步Asp.Net会话状态模块和内存中OLTP提供程序,如文档所示 我们的测试环境很好,金丝雀服务器测试也很好。然后,我们将构建扩展到服务器场中的其他服务器,并突然发现许多异常: System.Data.SqlClient.SqlException(0x80131904):当会话事务隔离级别设置为快照时,无法访问或创建内存优化的表和本机编译的模块 我们的提供商配置如下: <providers> <ad

我们在FrameworkV4.7.2上部署了一个新的构建。我们还部署了异步Asp.Net会话状态模块和内存中OLTP提供程序,如文档所示

我们的测试环境很好,金丝雀服务器测试也很好。然后,我们将构建扩展到服务器场中的其他服务器,并突然发现许多异常:

System.Data.SqlClient.SqlException(0x80131904):当会话事务隔离级别设置为快照时,无法访问或创建内存优化的表和本机编译的模块

我们的提供商配置如下:

<providers>
    <add name="SqlSessionStateProviderAsync"  connectionStringName="Session.ConnectionString" 
    type="Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync, 
    Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync, 
    Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    UseInMemoryTable="true" MaxRetryNumber="5" RetryInterval="100"  />
</providers>


您的代码是否在任何地方设置了事务隔离级别(特别是是否将其设置为
快照
任何地方)?当连接在连接池中循环时,事务隔离级别不会重置,因此,即使代码中任意位置的某个点更改了默认值,也应该在任意位置显式设置(或者,显式更改隔离级别的代码应该在处理连接之前重置,或者,也可以使用存储过程,因为它们隐式地这样做)。有两种主要的数据库设置与快照隔离和内存OLTP交互:
读取提交的快照
内存优化的快照
。您可能需要检查这些设置在不同环境中是否相同。但是,我不认为任何一种设置不正确都会产生此特定错误(他们会产生其他的)。@Jeroenmoster-我想这就是答案。连接重用-我会revert@JeroenMostert-你能把你的评论转换成答案吗,这样我就可以接受了?