C# SQL Server内存中OLTP和会话隔离设置为快照的ASP.NET会话状态
我们在FrameworkV4.7.2上部署了一个新的构建。我们还部署了异步Asp.Net会话状态模块和内存中OLTP提供程序,如文档所示 我们的测试环境很好,金丝雀服务器测试也很好。然后,我们将构建扩展到服务器场中的其他服务器,并突然发现许多异常: System.Data.SqlClient.SqlException(0x80131904):当会话事务隔离级别设置为快照时,无法访问或创建内存优化的表和本机编译的模块 我们的提供商配置如下: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
<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-你能把你的评论转换成答案吗,这样我就可以接受了?