AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 342138
Accepted
Jurgen Cuschieri
Jurgen Cuschieri
Asked: 2024-09-04 23:25:06 +0800 CST2024-09-04 23:25:06 +0800 CST 2024-09-04 23:25:06 +0800 CST

SQL Express 2019/2022 中的 Microsoft SQL 内存中 OLTP

  • 772

我正在尝试使用 SQL In-Memory OLTP。限制在于该解决方案需要与 SQL Express 2019 和 2022 兼容。

此链接声称内存中 OLTP 与所有版本的 SQL 兼容,包括 Express。

使用 2022 版本时,我无法开始:

EXECUTE master.dbo.xp_create_subdir 'C:\data\'

GO

ALTER DATABASE S2X ADD FILEGROUP S2x_mod
CONTAINS MEMORY_OPTIMIZED_DATA;

GO

 ALTER DATABASE S2x ADD FILE (
 name='S2x_mod1', filename='c:\data\S2x_mod1')
 TO FILEGROUP S2x_mod;

我到达上述查询的最后一部分并收到以下错误:

无法处理该操作。此 SQL Server 实例上已禁用 Always On 可用性组副本管理器。使用 SQL Server 配置管理器启用 Always On 可用性组。然后,重新启动 SQL Server 服务,并重试当前操作。有关如何启用和禁用 Always On 可用性组的信息,请参阅 SQL Server 联机丛书。

当尝试通过 SQL Server 配置管理器启用该选项时,它说使用此版本的 SQL Express无法打开“Always On 可用性组” 。

“Always On 可用性组”与此版本的 SQL Express 不兼容

使用2019版本,我完成了上述查询并设法创建了内存优化表和本机存储过程:

-- Creating a memory-optimized table
CREATE TABLE dbo.State
(
    CID NVARCHAR(50) NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000),
    PNO INT NOT NULL,
    IsStart BIT NOT NULL,
    IsEnd BIT NOT NULL,
    CMPID NVARCHAR(50) NOT NULL
) 
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);

GO

CREATE PROCEDURE dbo.GetStateByCID
@CID NVARCHAR(50)
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS
BEGIN ATOMIC WITH
(
    TRANSACTION ISOLATION LEVEL = SNAPSHOT,
    LANGUAGE = N'English'
)
    SELECT CID, PNO, IsStart, IsEnd, CMPID
    FROM dbo.State
    WHERE CID = @CID;
END;

但执行时:

EXEC    @return_value = [dbo].[GetStateByCID]
    @CID = N'1234'

我收到以下错误:

执行批处理时出错。错误消息为:内部连接致命错误。错误状态:15,令牌:0

我在网上没有找到很多关于此问题的帮助;但这似乎是 2017 版中修复的一个问题(请参阅此处)。这对我来说没有多大意义,因为我原本以为修复会默认包含在 2019 版中。无论如何,只有当内存中 OLTP 与 Express 2019和2022兼容时,我才可以使用它。

我在这里遗漏了什么?内存中 OLTP 是否与 SQL Express 兼容?我做错了什么吗?

sql-server
  • 1 1 个回答
  • 44 Views

1 个回答

  • Voted
  1. Best Answer
    Sean Gallardy
    2024-09-05T01:06:59+08:002024-09-05T01:06:59+08:00

    内存中 OLTP 是否与 SQL Express 兼容?

    是的,正如所记载的,确实如此。

    我做错什么了吗?

    是的。

    无法处理该操作。此 SQL Server 实例上已禁用 Always On 可用性组副本管理器。使用 SQL Server 配置管理器启用 Always On 可用性组。然后,重新启动 SQL Server 服务,并重试当前操作。有关如何启用和禁用 Always On 可用性组的信息,请参阅 SQL Server 联机丛书。

    这是因为您正在运行 RTM,并且没有应用过去约 3 年的任何补丁。此问题已在 CU1(第一个累积更新)中得到修复。一旦应用(撰写本文时最新的是 CU14),您将不会遇到此问题。我希望这能让您意识到应用补丁的重要性。

    但是当执行它时 [...] 我收到以下错误 [...]

    根据您提供的示例,您的执行是错误的。您的示例有@ConnectionID = N'1234'一个参数,但本机编译的存储过程有一个参数,@CID这意味着您应该收到有关缺少预期参数的错误。最有可能的是,由于没有修补,它有一个已经修复的问题。我无法像您那样从服务器端终止我的批处理,尽管我也没有非常努力,因为它在很多层面上都是不正确的,修复后应该不会有任何问题。

    内存优化表就是在 SQL Server 上投入大量内存。

    如果您在锁定和闩锁时遇到热路径,那么这就是一个用例。其中大多数不是大型表,而是经常更新或由多个并发连接使用的较小表,例如 asp.net 中的会话状态,但是还有其他用途,例如加载数据时吸收冲击(尽管我同意原始评论,即此场景对于 Express 版本不是很有用),没有日志记录的表(您不关心数据,它不需要恢复但需要可用),等等。

    [...] 继续寻找可以在 Windows 上本地运行的合适的“内存”存储 [...]

    我没有看到任何内容指定完全内存关系数据库引擎的绝对必要性。

    • 3

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve