0

我有一个小问题:(,我有一个数据库,一个partition_schema达到了1000个分区,上网看了一下发现是顶级但是可以增加到15000,我不能增加到15000 ,我可以做的解决方案是合并一些分区。

自20100101以来我每天都有一个分区,实际上有999,它不能再增加了,所以我想从一个月开始合并分区,但在此之前我想对将受到影响的信息进行备份, 但我不知道哪些表会受到具有 999 个范围的函数的影响。

问:我怎样才能知道哪些表受到该功能的影响?或者这是确保合并分区不会丢失数据的最佳方法?

4

1 回答 1

2

您不应该丢失数据合并分区。不过,请创建一个备份,以防万一。

这是一个查询,可以让您深入了解哪些表正在使用分区函数:

DECLARE @PartitionFunction sysname = 'YourPartitionFunctionName';

SELECT t.name TableName
     , pf.name PartitionFunction
     , ps.name PartitionScheme
     , pst.partition_number
     , pst.used_page_count
     , row_count
from sys.dm_db_partition_stats pst
JOIN sys.partitions p ON pst.partition_id = p.partition_id
JOIN    sys.tables t
        ON p.object_id = t.object_id
JOIN    sys.indexes i
        ON p.object_id = i.object_id
        AND p.index_id = i.index_id
JOIN    sys.allocation_units au
        ON p.hobt_id = au.container_id
JOIN    sys.filegroups f
        ON au.data_space_id = f.data_space_id
JOIN    sys.partition_schemes ps
        ON ps.data_space_id = i.data_space_id
JOIN    sys.partition_functions pf
        ON ps.function_id = pf.function_id
WHERE used_page_count > 0 
  AND pf.name = @PartitionFunction 
  AND pst.index_id IN (0,1)/*Remove Nonclustered index counts*/;

您还可以在此处参考我的答案,了解我经常用于监视分区卷的表值函数。

于 2012-10-23T00:23:00.740 回答