SQL 2014 HA群集上的内存表在辅助节点上无法查询

时间:2017-03-30 13:52:47

标签: sql-server sql-server-2014 alwayson in-memory-tables

我在SQL 2014上的高可用性组数据库上设置了一个简单的内存表。 直接从主节点或从Listener查询表可以正常工作。 如果我将查询字符串更改为ReadOnly Intent或尝试直接从2个辅助节点中的任何一个查询,我会收到以下错误: -

Msg 41341, Level 16, State 1, Line 1 Table 'tbl_GetMakes' is not yet available on the secondary replica.

此消息在线信息非常少。它谈到在“REDO”过程发生时它被正确复制。据我所知,“REDO”过程应该是自动的,该表现在已经存在超过24小时仍然无法正常工作。 任何人的想法? 谢谢, 乔恩

1 个答案:

答案 0 :(得分:0)

感谢Sean Gallardy在微软论坛上回答了这个问题

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a6cbeb89-bc99-491c-8c2f-9937d5ddfa6a/inmemory-table-on-sql-2014-ha-cluster-not-queriable-on-secondary-nodes?forum=sqldisasterrecovery

我已经从以下链接复制了答案: -

这不正确,它们绝对可以从可读的二级读取,假设: 内存表是使用Durability = schema_and_data制作的 检查点已在主数据库上运行 使用适当的隔离级别 我可以轻松地让这个工作,这是一个repro:   1.在主数据库上创建数据库并放入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
  1. 创建IM表并填充
  2.   

    CREATE TABLE dbo.IMOLTP      (      C1 INT NOT NULL PRIMARY KEY NONCLUSTERED HASH with(BUCKET_COUNT = 1000)      )      WITH(MEMORY_OPTIMIZED = ON,DURABILITY = SCHEMA_AND_DATA)

         

    INSERT INTO dbo.IMOLTP(C1)VALUES(1),(2),(3)      GO

         

    CHECKPOINT

         

    SELECT * FROM dbo.IMOLTP

    1. 从READABLE secondary
    2. 中读取
        

      使用Test1      GO

           

      SELECT * FROM dbo.IMOLTP      GO

      它适用于我:Microsoft SQL Server 2014(SP2-CU3)(KB3204388) - 12.0.5538.0(X64)

      -Sean

相关问题