【问题标题】:ALTER a replicated column in SQL Server 2008 R2. Merge ReplicationALTER SQL Server 2008 R2 中的复制列。合并复制
【发布时间】:2012-03-31 15:26:07
【问题描述】:

我想更改StudentPerformance 表中的列

要更改的列是 -

StudentName varchar(50) to StudentName varchar(100)
Percentage decimal(18,0) to Percentage decimal(18,2)

它被配置为合并复制。

  • 它会使我当前的快照过时吗?
  • 我是否必须重新初始化所有订阅?
  • 当我运行 alter 语句时,它会更新表中的所有记录并增加复制流量吗?

【问题讨论】:

    标签: sql-server sql-server-2008 replication merge-replication


    【解决方案1】:

    您需要在 Publisher 中使用 ALTER TABLE ALTER COLUMN 语法来执行此操作。默认情况下,架构更改将在下一次同步时传播,发布属性 @replicate_ddl 必须设置为 true。大多数情况下不需要新的快照或重新初始化。

    例如,我可以通过在发布数据库上执行将我的 SalesLT.Customer Title 列从 nvarchar(8) null 更改为 nvarchar(10) null:

    ALTER TABLE SalesLT.Customer ALTER COLUMN Title NVARCHAR(10) NULL 
    

    在大多数情况下,架构更改将在下一次同步时复制出来,Making Schema Changes on Publication Databases 中涵盖了一些例外情况。

    【讨论】:

    • 知道是否所有行都将在复制中的所有服务器之间更新和同步(上传/下载)?
    • 可以,只要未对连接或参数化过滤器中涉及的列进行架构更改。
    • 我更改了列,但它并没有使我的快照过时 :) 它也没有更新所有行以影响复制速度 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2012-11-07
    • 2011-05-22
    • 1970-01-01
    • 2013-12-21
    相关资源
    最近更新 更多