感谢 Sean Gallardy 在 Microsoft 论坛上回答了这个问题
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a6cbeb89-bc99-491c-8c2f-9937d5ddfa6a/inmemory-table-on-sql-2014-ha-cluster-not-queriable-on-辅助节点?forum=sqldisasterrecovery
我已经从下面的上述链接中复制了答案:-
这是不正确的,它们绝对可以从可读的辅助设备中读取,假设: 内存表是使用 Durability = schema_and_data 创建的 检查点已在主设备上运行 使用了正确的隔离级别 我可以很容易地让它工作,这是一个repro:1.在primary上创建数据库并放入AG
CREATE DATABASE [Test1]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'Test1',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Test1.mdf' ,
SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
FILEGROUP [IMOLTP] CONTAINS MEMORY_OPTIMIZED_DATA DEFAULT
( NAME = N'imoltp_dir',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\imoltp_dir' ,
MAXSIZE = UNLIMITED)
LOG ON
( NAME = N'Test1_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\Test1_log.ldf' , SIZE = 1280KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
- 创建 IM 表并填充
CREATE TABLE dbo.IMOLTP (C1 INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000)) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA)
插入 dbo.IMOLTP(C1) 值 (1), (2), (3) 去
检查点
选择 * 从 dbo.IMOLTP
- 从 READABLE 辅助读取
使用 Test1 去
选择 * 从 dbo.IMOLTP 去
它适用于我:Microsoft SQL Server 2014 (SP2-CU3) (KB3204388) - 12.0.5538.0 (X64)
-肖恩