2012-03-15 115 views
2

我想改变列StudentPerformance更改SQL Server 2008 R2中的复制列。合并复制

列被改变的 -

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

它被配置为合并复制。

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

回答

4

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

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

在大多数情况下,架构更改将复制:

例如,我可以为nvarchar由发布数据库上执行改变我SalesLT.Customer标题栏(8)null来为nvarchar(10)空在下一次同步时,在Making Schema Changes on Publication Databases中有一些例外情况。

+0

任何想法,如果它将所有的行将更新和同步(上载/下载)复制中的所有服务器? – Thakur 2012-03-16 07:23:54

+0

是的,只要模式更改不是在连接或参数化过滤器中涉及的列上进行的。 – 2012-03-16 07:44:56

+1

我改变了列,它没有让我的快照obselete :)它也没有更新所有的行来影响复制速度:) – Thakur 2012-04-11 11:25:45