sql - 在 SQL Server 数据库中查找分区架构定义

标签 sql sql-server partitioning database-partitioning partition

我有权访问数据库,并且需要了解数据库中的分区方案定义。即我需要知道分区方案名称、它使用哪个分区函数、分配的分区是什么文件组等等...

例如,有人创建了一个分区方案(取自msdn):

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);

那我想要 名称:myRangePS1, 函数:myRangePF1, 和分区:(test1fg、test2fg、test3fg、test4fg)、 是否分区ALL

我该如何仅使用 SQL 语句来解决这个问题? 我可以使用系统 View sys.partition_scheme查询分区的名称和一些数据,但这还不够。

下面显示了查找分区函数定义的类似解决方案: http://social.msdn.microsoft.com/forums/sqlserver/en-US/d0ce92e3-bf48-455d-bd89-c334654d7e97/how-to-find-partition-function-text-applied-to-a-table

最佳答案

我修改了 knkarthick24 的第一个查询以显示与每个文件组关联的分区函数值:

select distinct ps.Name AS PartitionScheme, pf.name AS PartitionFunction,fg.name AS FileGroupName, rv.value AS PartitionFunctionValue
    from sys.indexes i  
    join sys.partitions p ON i.object_id=p.object_id AND i.index_id=p.index_id  
    join sys.partition_schemes ps on ps.data_space_id = i.data_space_id  
    join sys.partition_functions pf on pf.function_id = ps.function_id  
    left join sys.partition_range_values rv on rv.function_id = pf.function_id AND rv.boundary_id = p.partition_number
    join sys.allocation_units au  ON au.container_id = p.hobt_id   
    join sys.filegroups fg  ON fg.data_space_id = au.data_space_id  
where i.object_id = object_id('TableName') 

这是我正在寻找的查询,我希望其他人可以利用它!

关于sql - 在 SQL Server 数据库中查找分区架构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24878446/

相关文章:

sql - 迭代大型外部 postgres db,操作行,将输出写入 rails postgres db

sql - Postgres Spring Data JPA 将列表作为值传递

sql - 动态月份和年份枢轴,排序不良

oracle - 在 SUBPARTITION 中使用 INTERVAL (NUMTOYMINTERVAL (1 ,'MONTH')

r - 将集合分为n个不相等的子集,关键决定因素是该子集中的元素聚合并等于预定量吗?

c# - 这是 Partitioner.Create(int fromInclusive, int toExclusive) 中的错误吗?

mysql - 在 MySQL 中聚合一个简单的 COUNT

sql - 如何显示在azure sql中创建 View 的查询

sql-server - SQL MERGE INTO - 如何删除然后插入匹配/现有数据?

sql-server - SQL SSAS - 部署错误