2012-03-15 132 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