Nếu bạn có một bảng hoặc chỉ mục được phân vùng trong SQL Server và bạn muốn kiểm tra loại tham số của hàm phân vùng, bạn có thể sử dụng sys.partition_parameters
chế độ xem danh mục hệ thống.
Dạng xem này trả về một hàng cho mỗi tham số của một hàm phân vùng.
Kiểu tham số phải khớp hoặc có thể chuyển đổi hoàn toàn thành kiểu dữ liệu của cột phân vùng trong bảng hoặc chỉ mục.
Ví dụ
Dưới đây là một ví dụ hiển thị các cột được trả về bởi sys.partition_parameters
xem.
SELECT * FROM sys.partition_parameters;
Kết quả:
+---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+ | function_id | parameter_id | system_type_id | max_length | precision | scale | collation_name | user_type_id | |---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------| | 65542 | 1 | 56 | 4 | 10 | 0 | NULL | 56 | +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
Tôi chỉ có một chức năng phân vùng và vì vậy chỉ một hàng được trả về.
Đây là kết quả một lần nữa sử dụng đầu ra dọc (để giúp bạn không phải cuộn sang ngang):
function_id | 65542 parameter_id | 1 system_type_id | 56 max_length | 4 precision | 10 scale | 0 collation_name | NULL user_type_id | 56
Lấy tên loại
sys.partition_parameters
chế độ xem không thực sự trả lại tên loại. Nó trả về loại ID. Trên thực tế, nó trả về ID loại của cả loại hệ thống và loại do người dùng xác định.
May mắn thay, bạn, chúng tôi có thể sử dụng TYPE_NAME()
hàm để trả về tên của mỗi.
SELECT
function_id,
parameter_id,
TYPE_NAME(system_type_id) AS [System Type],
max_length,
precision,
scale,
collation_name,
TYPE_NAME(user_type_id) AS [User Type]
FROM sys.partition_parameters;
Kết quả (sử dụng đầu ra dọc):
function_id | 65542 parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int
Trả về tên hàm
Chúng tôi cũng có thể tham gia sys.partition_functions
xem để trả về tên hàm thay vì ID của nó.
SELECT
pf.name,
pp.parameter_id,
TYPE_NAME(pp.system_type_id) AS [System Type],
pp.max_length,
pp.precision,
pp.scale,
pp.collation_name,
TYPE_NAME(pp.user_type_id) AS [User Type]
FROM sys.partition_parameters pp
INNER JOIN sys.partition_functions pf
ON pf.function_id = pp.function_id;
Kết quả (sử dụng đầu ra dọc):
name | MoviesPartitionFunction parameter_id | 1 System Type | int max_length | 4 precision | 10 scale | 0 collation_name | NULL User Type | int