Sql-Server

從 MS SQL 2012 中的特定分區刪除數據

  • May 17, 2018

我想使用分區 ID 從特定分區中刪除數據。我得到了從 SQL 2016 的特定分區截斷數據的查詢,但沒有找到任何低版本的查詢。

我嘗試以下查詢僅刪除分區 ID 為 14 和 15 的分區中的數據。

delete from  partitiontable1 WITH (PARTITIONS (14 to 15))

刪除語句是否會連同數據一起刪除分區本身?

我想保持分區完整併從特定分區中刪除數據。說,我在一個表上創建了分區,它有 5 個分區(1、2、3、4、5),我只想從第 2 和第 3 分區中刪除數據。

此刪除語句是無效的 SQL Server 2012 語法,因此它只會引發錯誤。

使用MERGEDDL 刪除分區及其關聯邊界;DML 語句,例如DELETE從不刪除分區。

在 SQL 2014 及更早版本中,從分區中刪除所有行的最有效方法是使用SWITCH(SQL 2016 允許使用 指定特定分區TRUNCATE)。要使用 SWITCH,請創建具有相同架構和索引的類似分區臨時表。然後,您可以在表之間切換數據作為元數據操作,然後TRUNCATE是臨時表。

ALTER TABLE dbo.YourTable
   SWITCH PARTITION 1 TO dbo.YourTable_Staging PARTITION 1;
ALTER TABLE dbo.YourTable
   SWITCH PARTITION 2 TO dbo.YourTable_Staging PARTITION 2;
ALTER TABLE dbo.YourTable
   SWITCH PARTITION 3 TO dbo.YourTable_Staging PARTITION 3;
ALTER TABLE dbo.YourTable
   SWITCH PARTITION 4 TO dbo.YourTable_Staging PARTITION 4;
ALTER TABLE dbo.YourTable
   SWITCH PARTITION 5 TO dbo.YourTable_Staging PARTITION 5;
TRUNCATE TABLE dbo.YourTable_Staging;

引用自:https://dba.stackexchange.com/questions/207054