问题标签 [in-memory-oltp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4732 浏览

sql-server - SQL Server 内存中 oltp 事务快照隔离

试图了解事务隔离级别如何在 SQL Server 内存优化表(内存中 oltp)上工作。

如果我执行以下查询:

显示错误消息:

仅自动提交事务支持使用 READ COMMITTED 隔离级别访问内存优化表。显式或隐式事务不支持它。使用诸如 WITH (SNAPSHOT) 之类的表提示为内存优化表提供支持的隔离级别。

现在,如果我通过添加表提示来修改查询,它可以工作:

但是,如果我通过更改事务隔离级别SET TRANSACTION ISOLATION LEVEL SNAPSHOT并删除表提示:

它再次显示错误消息不起作用:

当会话 TRANSACTION ISOLATION LEVEL 设置为 SNAPSHOT 时,无法访问或创建内存优化表和本机编译模块。

为什么它与表提示一起使用,并通过设置事务隔离级别

才不是?

更新:尝试设置MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOTON,仍然从上次查询中得到相同的错误:

当会话 TRANSACTION ISOLATION LEVEL 设置为 SNAPSHOT 时,无法访问或创建内存优化表和本机编译模块。

0 投票
0 回答
620 浏览

sql - 在 sql server 2016 中创建内存表时的桶计数帮助

我有一些业务需要每天运行,并且会影响表中的所有行。一旦记录被修复并且不能通过逻辑再次更改,它就会被移动到磁盘表中。在其最大值时,表中将有大约 3000 万行。它非常瘦,只是主表的链接项和标志表的键。标志键是要更新的。

我的问题是,当我准备这个大小的表时,我应该在索引上使用哪个大小的桶数?

该表将在 4 月份开始时很小,可能只有几十万行,但到本财政年度结束时,它将增长到前几年所提到的最大值,我不确定这个实际上是空的桶是否在开始会有任何问题,或者如果可以将计数保持在 3000 万大关。

在此先感谢您的意见、建议和帮助。

我已经提供了下面的代码,并且我尝试在谷歌上搜索如果存储桶计数很高但随着表随着时间的推移初始行数很低但没有发现任何东西可以帮助我理解是否会出现性能问题,因为这个的。

0 投票
0 回答
706 浏览

asp.net - “c:\Data\imoltp_mod1”指定的路径不在有效目录中

我正在使用 Sql Server InMemory OLTP for Asp.Net 应用程序使用此链接在 Sql Server 中存储会话数据

之后我发现了一个错误,比如需要为我用于 InMemory OLTP 的数据库创建文件组。我能够为我现有的数据库创建文件组。之后需要添加文件,为此我尝试了以下查询:

但是当我在查询上面运行时,我得到以下错误:

消息 5121,级别 16,状态 2,第 1 行
“c:\Data\imoltp_mod1”指定的路径不在有效目录中。
Msg 5009, Level 16, State 14, Line 1
找不到或无法初始化语句中列出的一个或多个文件。

在此路径中,我创建了“数据”文件夹,甚至尝试将驱动器从 C 更改为 D,但仍然出现相同的错误。我还根据此链接提供的解决方案创建了新数据库。但仍然停留在同一个查询中。

我在这里有几个与数据库中的会话存储相关的问题。

当我在会话成员提供者相关的连接字符串中提供数据库名称时,它会动态创建表,如果是,那么表的名称可能是什么?

请建议。

0 投票
1 回答
48 浏览

sql-server - 如何替换本机编译模块中的函数 REPLACE()?

我将旧的存储过程 (SQL Server 2016) 转换为本地编译的过程,并在一个地方收到:

消息 10794,级别 16,状态 93,过程 usp_2,第 101 行 [批处理开始第 108 行]
本机编译的模块不支持“替换”功能。

如何更换功能REPLACE()

0 投票
0 回答
19 浏览

sql - 当前事务试图更新自该事务开始以来已更新的记录。交易被中止

我正在尝试更新内存中 OLTP 的表。在这种情况下,我们可能必须并行更新同一行。在同一记录的并发更新期间,我得到低于报告的错误。这是我的示例更新声明。

在 SQL 窗口 1 中同时在窗口 2 中执行以下命令,我正在执行第二个更新命令

窗口 2:

现在我得到低于报告的错误。但同样适用于普通表,第二个窗口正在等待完成第一个窗口事务。我如何也为内存优化表设置至少相同的行为。

System.Data.SqlClient.SqlException (0x80131904):当前事务试图更新自该事务开始以来已更新的记录。交易被中止。该语句已终止。
在 System.Data.SqlClient.SqlCommand.<>c.b__126_0(任务1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback 回调,对象状态)