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是一个元数据操作,所以并行运行并不会为你节省很多。 –