1

切換多個分區我有一個表100個parititons,我需要切換到其相應階段表(在同一FG和對齊索引) 使用下面SQL Server的一次

查詢目前即時通訊改變表MS_PROD 開關分區5至MS_Stage分區5

我最後爲所有100個分區做這個,是否有一種快速的方式來並行切換所有的分區。

+1

沒有。您將需要一個迭代過程(循環/光標)循環並執行每個命令。這顯然是一個串行操作。你還必須記住swtich是一個元數據操作,所以並行運行並不會爲你節省很多。 –

回答

2

不是我所知道的。我通常會做的是將開關置於循環中。類似這樣的:

DECLARE @Partitions TABLE (PartitionId int PRIMARY KEY CLUSTERED); 
DECLARE @PartitionId INT; 

INSERT @Partitions(PartitionId) 
    SELECT 
     prv.boundary_id PartitionId 
    FROM sys.partition_functions AS pf 
    INNER JOIN sys.partition_range_values prv ON prv.function_id=pf.function_id 
    WHERE (pf.name=N'PartitionFunctionName'); 

WHILE EXISTS (SELECT NULL FROM @Partitions) 
    BEGIN 

     SELECT TOP 1 @PartitionId = PartitionId FROM @Partitions; 

     ALTER TABLE MS_PROD SWITCH PARTITION @PartitionId TO MS_Stage PARTITION @PartitionId; 

     RAISERROR('Switched PartitionId %d to Stage',0,1,@PartitionId) WITH NOWAIT; 

     DELETE @Partitions WHERE PartitionId = @PartitionId; 

    END