You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server企业版到标准版事务复制报Online索引操作错误如何解决

报错的核心原因是发布端为企业版,复制项目的默认架构选项开启了「生成联机索引创建脚本」的开关,生成的快照架构脚本会自动加ONLINE=ON参数,和源库创建索引时是否用了ONLINE=ON没有必然关联,所以你之前重建源库索引的操作不会生效。

定位包含ONLINE=ON配置的复制项目
  • 方法1:在发布端执行如下SQL查询,定位开启了在线索引生成选项的复制项目:
USE [你的发布数据库名]
GO
SELECT 
    a.name AS 复制项目名,
    a.dest_table AS 订阅端目标表名,
    i.name AS 关联索引名,
    a.schema_option
FROM sysarticles a
JOIN sysindexes i ON a.objid = i.id
WHERE (a.schema_option & 0x8000000) = 0x8000000 -- 0x8000000对应生成联机索引创建脚本的配置项
AND i.indid BETWEEN 1 AND 254 AND (i.status & 64) = 0 -- 排除统计信息、堆表等非物理索引项

返回结果中的项目即为生成带ONLINE=ON索引脚本的复制项目。

  • 方法2:找到发布端配置的快照输出目录,打开对应项目的.sch后缀架构脚本文件,直接搜索ONLINE=ON关键字,即可定位到对应的表和索引。
无需升级订阅端的解决方案

方案1:修改复制项目架构选项,禁用在线索引生成

执行如下SQL关闭对应复制项目的联机索引生成开关,无需修改源库索引配置:

USE [你的发布数据库名]
GO
EXEC sp_changearticle 
    @publication = N'你的发布名称',
    @article = N'上一步查到的复制项目名',
    @property = N'schema_option',
    @value = (SELECT schema_option & ~0x8000000 FROM sysarticles WHERE name = N'对应复制项目名'), -- 仅移除联机索引配置,不影响其他架构选项
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1

如果需要批量处理所有项目,可遍历sysarticles表统一修改所有匹配项的schema_option。修改完成后重新生成快照,再次同步即可解决报错。

方案2:快照阶段跳过索引创建,同步完成后手动建索引

如果不需要复制自动同步索引配置,可在发布属性的项目配置中,取消勾选「复制聚集索引」「复制非聚集索引」选项,重新生成快照完成首次同步后,手动在订阅端执行不带ONLINE=ON的索引创建语句即可。

方案3:自定义架构脚本替代自动生成脚本

在复制项目的属性配置中,指定自定义的架构创建脚本,完全替换系统自动生成的带ONLINE=ON的脚本,快照应用时会优先执行你指定的自定义脚本。

内容的提问来源于stack exchange,提问作者T Fletcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:39:01