Sql-Server
SQL 獲取分區邊界和文件組
對於給定的分區方案名稱,我需要檢索一組
- 邊界值
- 文件組名稱
這必須在不存在參與該方案的任何表的情況下工作。
即通過 sys.indexes 連接將不起作用。
我認為答案在於 sys.destination_data_spaces,但尚未計算出與 sys.partition_range_values 的連接。
這種關係並不完全直覺,但我認為此查詢將為您提供所需的資訊:
SELECT PScheme = ps.name, PFunction = pf.name, Boundary = dds.destination_id, BoundaryValue = prv.value, [Filegroup] = fg.name FROM sys.partition_schemes AS ps INNER JOIN sys.partition_functions AS pf ON ps.function_id = pf.function_id INNER JOIN sys.destination_data_spaces AS dds ON ps.data_space_id = dds.partition_scheme_id INNER JOIN sys.filegroups AS fg ON dds.data_space_id = fg.data_space_id LEFT OUTER JOIN sys.partition_range_values AS prv ON dds.destination_id = pf.boundary_value_on_right + prv.boundary_id AND prv.function_id = pf.function_id;
而且因為
LEFT
/RIGHT
對我來說總是一個乏味的腦力練習,所以你可能需要翻轉boundary_value_on_right
倒數第二行的部分:ON dds.destination_id = prv.boundary_id + ABS(1-pf.boundary_value_on_right)
您不需要創建任何表。