Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL 2014 HA群集上的内存中表在辅助节点上不可查询_Sql Server_Sql Server 2014_Alwayson_In Memory Tables - Fatal编程技术网

Sql server SQL 2014 HA群集上的内存中表在辅助节点上不可查询

Sql server SQL 2014 HA群集上的内存中表在辅助节点上不可查询,sql-server,sql-server-2014,alwayson,in-memory-tables,Sql Server,Sql Server 2014,Alwayson,In Memory Tables,我在SQL 2014上的高可用性组数据库上设置了一个简单的内存表。 直接从主节点或从侦听器查询表可以正常工作。 如果我将查询字符串更改为ReadOnly Intent,或尝试直接从2个辅助节点中的任何一个进行查询,则会出现以下错误:- Msg 41341,16级,状态1,第1行 表“tbl_GetMakes”在辅助副本上尚不可用。 网上关于这条消息的信息很少。它说当“重做”过程发生时,它会被正确地复制。据我所知,“重做”过程应该是自动的,表已经放置了24个多小时,仍然不能工作。 有什么想法吗?

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

Msg 41341,16级,状态1,第1行
表“tbl_GetMakes”在辅助副本上尚不可用。

网上关于这条消息的信息很少。它说当“重做”过程发生时,它会被正确地复制。据我所知,“重做”过程应该是自动的,表已经放置了24个多小时,仍然不能工作。 有什么想法吗? 谢谢
乔恩

感谢肖恩·加拉迪在微软论坛上回答了这个问题

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

这是不正确的,它们完全可以从可读的辅助设备读取,假设: 内存中的表是使用耐久性=schema_和_数据创建的 检查点已在主服务器上运行 使用适当的隔离级别 我可以很容易地让它工作,这里有一个复制: 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
  • 创建IM表并填充
  • 创建表dbo.IMOLTP ( C1 INT NOT NULL主键非聚集散列(BUCKET_COUNT=1000) ) 使用(内存\优化=打开,耐久性=模式\和\数据)

    在dbo.IMOLTP(C1)中插入值(1)、(2)、(3) 去

    检查站

    从dbo.IMOLTP中选择*

  • 从可读的辅助设备读取
  • 使用Test1 去

    从dbo.IMOLTP中选择* 去

    它在以下方面对我来说运行良好:Microsoft SQL Server 2014(SP2-CU3)(KB3204388)-12.0.5538.0(X64)


    -Sean

    奇怪,在初始同步期间是否存在该表?您是否能够在sys.tables中看到该表?是否可以在sys.tables中看到该表。我取出了一个现有的常规表,并将其替换为内存中的表。当我这样做时,数据库已经在HA组中。您的编辑使此答案不太有用,因为它现在实际上是一个仅链接的答案。答案可以链接到资源,但它们本身应该是有用的,无论它们链接到的站点当前是否可用。