f SQL Server non-Partition 表格轉換至分割表 ~ 迪貝之家

Pages

SQL Server non-Partition 表格轉換至分割表

 

最近剛好在處理複寫建置
Snapshot 初始化好像不會主動把表原分割的定義帶到訂閱端
剛好我就拿訂閱端來做測試
進行未分割表轉換為分割表的測試
我手上是有兩個情境
primary key是非叢集或叢集
對叢集PK表格
重建PK直接帶入partition scheme就OK了
而且重建的字眼是用CREATE
我那時候看到都傻眼了
想說我一定要來測看看
只是CREATE 一定得帶上DROP_EXISTING
底下這是我的語法

CREATE UNIQUE CLUSTERED INDEX PK_DEL_STAT ON [dbo].[DEL_STAT] (
[BILL] ASC,
[SEQ] ASC,
[STATUS] ASC,
[EMP] ASC,
[CREATE_DATE] ASC )
WITH (DROP_EXISTING = ON)
ON [PS_DS]([BILL]);

PS_DS 當然就是Partition Scheme
BILL是分割欄位

2.非叢集PK 表格
這就比較麻煩了
他需要三個步驟
a. 如同PK叢集一樣
先建出clustered pk 分割表
其實clustered pk本身就是表格
指定他套用分割,他就是分割表格
b. drop pk contraint
這就是把clutered 分割表轉為heap 分割表
c. 依partition scheme 建出uniqe key 非叢集index 分割
這是為了要Align 資料表的分割
指令步驟如下 :
a. 建出clustered pk 分割表
CREATE UNIQUE CLUSTERED INDEX PK_DEL_STAT ON [dbo].[DEL_STAT] (
[BILL] ASC,
[SEQ] ASC,
[STATUS] ASC,
[EMP] ASC,
[CREATE_DATE] ASC )
WITH (DROP_EXISTING = ON)
ON [PS_DS]([BILL]);
b.drop pk contraint
ALTER TABLE [dbo].[DEL_STAT] DROP CONSTRAINT PK_DEL_STAT
go
c.Align 索引與資料表的分割
CREATE UNIQUE NONCLUSTERED INDEX PK_DEL_STAT ON [dbo].[DEL_STAT] (
[BILL] ASC,
[SEQ] ASC,
[STATUS] ASC,
[EMP] ASC,
[CREATE_DATE] ASC )
WITH (DROP_EXISTING = ON)
ON [PS_DS]([BILL]);