我有一个小问题:(我有一个数据库,一个partition_schema达到了1000个分区,在互联网上看一看我发现它是顶级但它可以增加到15000.我无法增加它到15000,我能做的解决方案是合并一些分区。
我自20100101以来有一个分区,实际上有999,它不能再增加,所以我想从一个月合并分区,但在此之前我想要备份正在进行的信息受影响,但我不知道哪些表受到具有999范围的函数的影响。
Q值。如何找出该功能影响的表格?或者哪种方法可以合并分区我不会丢失数据?
答案 0 :(得分: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*/;
您还可以参考我的答案here获取我经常用于监控分区容量的表值函数。