2010-06-03 51 views
10

我有一個表 'X',也下面撤消表分區

  1. CREATE PARTITION FUNCTION PF1(INT)AS RANGE LEFT FOR VALUES(1,2,3,4)
  2. CREATE PARTITION SCHEME PS1 AS PARTITION PF1 ALL TO([PRIMARY])
  3. CREATE CLUSTERED INDEX CIDX_X ON X(COL1)ON PS1(COL1)

創建我有數據的4個邏輯分區這3個步驟。

我的問題是,我該如何將此分區恢復到其原始狀態?

回答

21

經過不斷的搜索

步驟2天:

  1. DROP INDEX CIDX_X on X/*刪除聚集*/
  2. CREATE CLUSTERED INDEX CIDX_X1 ON X(col1) ON [PRIMARY]/*創建表上的另一個聚集索引從分區釋放它方案;在這裏,「ON [primary]」部分是從表中刪除分區方案的關鍵! */
  3. DROP PARTITION SCHEME PS1
  4. DROP PARTITION FUNCTION PF1
  5. DROP INDEX CIDX_X1 ON X/*放棄你所創建的虛擬聚集索引,因爲它是唯一的創建從分區方案*/
0

我發現,這些額外的免費表步驟應該被添加到Storm給出的答案中,因爲在刪除聚集索引之前有一些點,發佈需要被刪除,因爲它不允許聚簇索引在刪除之前被刪除,並且在刪除之後 - 方案和分區功能需要重新創建和公佈還需要再次啓動。

注:我使用SQL 2012
主鍵通常是最常用的集羣約束,所以無論我使用的主鍵,考慮到這些步驟也適用於集羣的約束了。另外,PS =分區方案,PF =分區功能。

一些準備步驟:

  1. 讓一滴發佈腳本
  2. 做一個創建發佈腳本
  3. 確定誰擁有的依賴與分區方案中的所有表,並記下他們的主鍵/聚簇索引。另外,記下主鍵列使用的所有字段(最好爲主鍵或聚簇索引生成腳本)
  4. 爲受影響的表製作腳本。
  5. 爲有問題的PF和PS做一個腳本。

    以上所有內容,使用SQL Management Studio在右擊時生成腳本。並選擇刪除和​​創建。

現在,當一切準備就緒。
1.刪除發佈(使用您生成的腳本)
2.刪除與PS鏈接的這些表的主鍵約束。 alter table [tablename] drop constraint [pk_name]
3.創建一個虛擬約束,但使用您在該被刪除的主鍵中使用的相同字段。 CREATE CLUSTERED INDEX CIDX_X1 ON tablename(field1,field2,field3,field4) ON [PRIMARY]
4.刪除分區方案和功能。

DROP PARTITION SCHEME [PartitionSchemeName_PS] 
GO 

DROP PARTITION FUNCTION [PartitionfunctionName_PF] 
GO 
  • 刪除的啞指標 DROP INDEX CIDX_X1 ON tablename
  • 添加背面的簇索引/主鍵約束(使用所生成的腳本作爲前面提到的。
  • 創建分區功能和分區模式(確保PS> PF的元素數量,其中PS = PF + 2個元素)
  • 將發佈商加回(使用生成的腳本)