Sql-Server
從 MS SQL 2012 中的特定分區刪除數據
我想使用分區 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 語法,因此它只會引發錯誤。
使用
MERGE
DDL 刪除分區及其關聯邊界;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;