1
切換多個分區我有一個表100個parititons,我需要切換到其相應階段表(在同一FG和對齊索引) 使用下面SQL Server的一次
查詢目前即時通訊改變表MS_PROD 開關分區5至MS_Stage分區5
我最後爲所有100個分區做這個,是否有一種快速的方式來並行切換所有的分區。
切換多個分區我有一個表100個parititons,我需要切換到其相應階段表(在同一FG和對齊索引) 使用下面SQL Server的一次
查詢目前即時通訊改變表MS_PROD 開關分區5至MS_Stage分區5
我最後爲所有100個分區做這個,是否有一種快速的方式來並行切換所有的分區。
不是我所知道的。我通常會做的是將開關置於循環中。類似這樣的:
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
沒有。您將需要一個迭代過程(循環/光標)循環並執行每個命令。這顯然是一個串行操作。你還必須記住swtich是一個元數據操作,所以並行運行並不會爲你節省很多。 –