充当快照和事务复制订阅者的表(不包括点对点事务复制)可以配置为内存优化表。 其他复制配置与内存优化表不兼容。 此功能从 SQL Server 2016 (13.x) 开始可用。
需要进行两项配置
配置订阅数据库以支持复制到内存优化表
通过使用 sp_addsubscription (Transact-SQL) 或 sp_changesubscription (Transact-SQL) 将 @memory_optimized 属性设置为 true。
配置该项目以支持复制到内存优化表
使用 sp_addarticle (Transact-SQL) 或 sp_changearticle (Transact-SQL) 为项目设置
@schema_option = 0x40000000000选项。
要将内存优化表配置为订阅者
创建事务发布。 有关详细信息,请参阅 Create a Publication。
将文章添加到出版物中。 有关详细信息,请参阅 定义项目。
如果是使用 Transact-SQL 进行配置,请将 sp_addarticle 存储过程的 @schema_option 参数设置为
0x40000000000。在项目属性窗口中,将“启用内存优化” 设置为“true” 。
启动快照代理作业以为此发布生成初始快照。 有关详细信息,请参阅 创建并应用初始快照。
此时,创建新订阅。 在“新建订阅向导” 中,将“内存优化订阅” 设置为“true” 。
内存优化表现在应开始从发布者接收更新。
重新配置现有的事务复制
转到 Management Studio 中的订阅属性,然后将“内存优化订阅”设置为 true。 只有在重新初始化订阅之后,系统才会应用这些更改。
如果是使用 Transact-SQL 进行配置,请将 sp_addsubscription 存储过程的新 @memory_optimized 参数设置为 true。
转到 Management Studio 中的发布项目属性,然后将“启用内存优化” 设置为 true。
如果是使用 Transact-SQL 进行配置,请将 sp_addarticle 存储过程的 @schema_option 参数设置为
0x40000000000。内存优化表不支持聚集索引。 若要让复制通过在目标端将其转换为非聚集索引来处理这种情况,请将 将内存优化项目的聚集索引转换为非聚集索引 设置为 true。
如果是使用 Transact-SQL 进行配置,请将 sp_addarticle 存储过程的 @schema_option 参数设置为 0x0000080000000000。
重新生成快照。
重新初始化订阅。
备注和限制
仅支持单向事务复制。 不支持对等事务复制。
内存优化表无法发布。
分发器上的复制表不能配置为内存优化表。
合并复制不能包含内存优化表。
在订阅服务器上,在事务复制中涉及的表可以配置为内存优化表,但订阅服务器上的表必须满足针对内存优化表的要求。 这要求以下限制。
复制到订阅者内存优化表上的表,其数据类型仅限于内存优化表允许的数据类型。 有关详细信息,请参阅 内存中 OLTP 支持的数据类型。
内存优化表并非支持所有 Transact-SQL 功能。 有关详细信息,请参阅内存中 OLTP 不支持的 Transact-SQL 构造。
修改架构文件
如果使用内存优化表选项
DURABILITY = SCHEMA_AND_DATA,则表必须具有非聚集主键索引。ANSI_PADDING 必须为 ON。