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

Bri*_*y F 5 sql sql-server partitioning database-partitioning partition

我可以访问数据库,我需要知道数据库中的分区方案定义.即我需要知道分区方案名称,它使用哪个分区功能,分配的分区是什么文件组等等...

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

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);
Run Code Online (Sandbox Code Playgroud)

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

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

下面显示了找到分区函数定义的类似解决方案:http: //social.msdn.microsoft.com/forums/sqlserver/en-US/d0ce92e3-bf48-455d-bd89-c334654d7e97/how-to-find-分区功能文本施加到一个表

Bri*_*y F 9

我修改了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') 
Run Code Online (Sandbox Code Playgroud)

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