【问题标题】:Check SQL Server Replication Defaults检查 SQL Server 复制默认值
【发布时间】:2015-06-30 11:09:39
【问题描述】:

我们有一个数据库 a,每晚 2.45 AM 复制到订阅者数据库 b(用于 SSRS 报告)。

我们需要向其中一个复制表添加一列,因为它的 iSeries 中的源文件添加了一个列,我们需要在 SSRS 报告数据库中使用该列。

我了解(来自Making Schema Changes on Publication Databases)和来自Damien_The_Unbeliever 的答案here)在SQL Server 复制中有一个默认设置,如果我们使用T-SQL ALTER TABLE DDL 语句来添加新列到我们 PION 数据库中的表 BUPF,更改将自动传播到订阅者数据库。

我如何检查架构更改的复制设置,以确保我们在进行更改后不会出现复制问题?

或者我应该只运行ALTER TABLE BUPF ADD Column BUPCAT Char(5) NULL

【问题讨论】:

    标签: sql-server replication ddl alter-table transactional-replication


    【解决方案1】:

    要向表中添加新列并将其包含在现有发布中,您需要在发布者处使用 ALTER TABLE ADD 语法。默认情况下,架构更改将传播给订阅者,发布属性 @replicate_ddl 必须设置为 true。

    您可以通过执行sp_helppublication 并检查@replicate_ddl 值来验证@replicate_ddl 是否设置为true。同样,您可以使用sp_changepublication 将@replicate_ddl 设置为true。

    请参阅Making Schema Changes on Publication Databases 了解更多信息。

    【讨论】:

    • 感谢 Brandon,这正是我想要的!
    • 我们发现我们需要在已发布的表上禁用复制,否则我们会收到关于 sqltrans 或其他内容的复制错误消息
    • 您不应该遇到错误,也不应该需要禁用复制来更改架构。您收到的确切错误是什么?您使用什么语法来更改架构?
    • 我认为这与sp_MStran_altertable 有关,我们正在使用ALTERTABLE BUPF ADD BUPCAT Char (5) NULL ...
    猜你喜欢
    • 2014-10-24
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多