sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)のパーティション関数のパラメータータイプを確認します

    SQL Serverにパーティション化されたテーブルまたはインデックスがあり、パーティション関数のパラメータータイプを確認する場合は、sys.partition_parametersを使用できます。 システムカタログビュー。

    このビューは、パーティション関数の各パラメーターの行を返します。

    パラメータタイプは、テーブルまたはインデックスのパーティショニング列のデータ型と一致するか、暗黙的に変換可能である必要があります。

    これは、sys.partition_parametersによって返される列を示す例です。 ビュー。

    SELECT * FROM sys.partition_parameters;

    結果:

    +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+
    | function_id   | parameter_id   | system_type_id   | max_length   | precision   | scale   | collation_name   | user_type_id   |
    |---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------|
    | 65542         | 1              | 56               | 4            | 10          | 0       | NULL             | 56             |
    +---------------+----------------+------------------+--------------+-------------+---------+------------------+----------------+

    パーティション関数が1つしかないため、返される行は1つだけです。

    垂直出力を使用した結果は次のとおりです(横にスクロールする必要がないようにするため):

    function_id    | 65542
    parameter_id   | 1
    system_type_id | 56
    max_length     | 4
    precision      | 10
    scale          | 0
    collation_name | NULL
    user_type_id   | 56

    タイプ名を取得

    sys.partition_parameters ビューは実際にはタイプ名を返しません。タイプIDを返します。実際には、システムタイプとユーザー定義タイプの両方のタイプIDを返します。

    幸い、TYPE_NAME()を使用できます それぞれの名前を返す関数。

    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;

    結果(垂直出力を使用):

    function_id    | 65542
    parameter_id   | 1
    System Type    | int
    max_length     | 4
    precision      | 10
    scale          | 0
    collation_name | NULL
    User Type      | int

    関数名を返す

    sys.partition_functionsに参加することもできます IDの代わりに関数名を返すように表示します。

    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;

    結果(垂直出力を使用):

    name           | MoviesPartitionFunction
    parameter_id   | 1
    System Type    | int
    max_length     | 4
    precision      | 10
    scale          | 0
    collation_name | NULL
    User Type      | int

    1. Exists1またはExists*を使用したサブクエリ

    2. T-SQL火曜日#106:INSTEADOFトリガー

    3. Oracle DROP TABLE IF EXISTS Alternatives

    4. SQL Server(T-SQL)でテーブルのパーティション情報を取得する2つの方法