SQL Server 2008/2017/2019: テーブル名、列名、プロシージャ名の長さ制限を一挙公開!

2024-06-04

SQL Server: オブジェクト名の最大文字数

SQL Server におけるオブジェクト名 (テーブル名、列名、ストアド プロシージャ名など) の最大許容文字数は、バージョンによって異なります。

詳細

オブジェクト名バージョン最大許容文字数
テーブル名全バージョン128 文字
テーブル修飾子名全バージョン64 文字
列名全バージョン128 文字
インデックス名全バージョン128 文字
制約名全バージョン128 文字
トリガー名全バージョン128 文字
ストアド プロシージャ名全バージョン128 文字
ユーザー定義関数名全バージョン128 文字
ビュー名全バージョン128 文字
スキーマ名全バージョン128 文字
サーバー名2008 以降15 文字
インスタンス名2008 以降64 文字

補足事項

  • 上記の文字数は、すべて UTF-8 エンコーディングで計算されます。
  • オブジェクト名は、大文字と小文字を区別します。
  • 許可されていない文字は使用できません。許可されている文字の詳細については、SQL Server のドキュメントを参照してください。
  • 長いオブジェクト名は、可読性とメンテナンス性を悪化させる可能性があるため、避けることをお勧めします。

以下の例は、SQL Server 2019 で許可されるオブジェクト名の長さを示しています。

-- 128 文字のテーブル名
CREATE TABLE dbo.MyVeryLongTableName (
    Id INT PRIMARY KEY,
    Name NVARCHAR(255) NOT NULL
);

-- 64 文字のテーブル修飾子名
CREATE TABLE MySchema.dbo.MyTable (
    Id INT PRIMARY KEY,
    Name NVARCHAR(255) NOT NULL
);

-- 128 文字の列名
CREATE TABLE dbo.MyTable (
    Id INT PRIMARY KEY,
    MyVeryLongColumnName NVARCHAR(255) NOT NULL
);

    上記の情報に加えて、以下の点にも注意する必要があります。

    • オブジェクト名は、データベース内で一意である必要があります。
    • オブジェクト名は、予約済みキーワードや組み込み関数名と一致してはなりません。

    これらの制限事項の詳細については、SQL Server のドキュメントを参照してください。




    サンプルコード:SQL Server オブジェクト名の最大文字数

    -- 128 文字のテーブル名を作成
    CREATE TABLE dbo.MyVeryLongTableName (
        Id INT PRIMARY KEY,
        Name NVARCHAR(255) NOT NULL
    );
    
    -- 64 文字のテーブル修飾子名を作成
    CREATE TABLE MySchema.dbo.MyTable (
        Id INT PRIMARY KEY,
        Name NVARCHAR(255) NOT NULL
    );
    
    -- 128 文字の列名を作成
    CREATE TABLE dbo.MyTable (
        Id INT PRIMARY KEY,
        MyVeryLongColumnName NVARCHAR(255) NOT NULL
    );
    
    -- 128 文字のストアド プロシージャ名を作成
    CREATE PROCEDURE dbo.MyVeryLongStoredProcedureName
    AS
    BEGIN
        SELECT * FROM dbo.MyVeryLongTableName;
    END;
    

    このコードを実行すると、以下の結果が得られます。

    CREATE TABLE dbo.MyVeryLongTableName (
        Id INT PRIMARY KEY,
        Name NVARCHAR(255) NOT NULL
    )
    CREATE TABLE MySchema.dbo.MyTable (
        Id INT PRIMARY KEY,
        Name NVARCHAR(255) NOT NULL
    )
    CREATE TABLE dbo.MyTable (
        Id INT PRIMARY KEY,
        MyVeryLongColumnName NVARCHAR(255) NOT NULL
    )
    CREATE PROCEDURE dbo.MyVeryLongStoredProcedureName
    AS
    BEGIN
        SELECT * FROM dbo.MyVeryLongTableName;
    END
    

    上記のように、SQL Server 2019 では、テーブル名、列名、ストアド プロシージャ名など、128 文字 までのオブジェクト名を作成できます。

    注:

    • このコードは、SQL Server 2019 以降で使用することを前提としています。



    SQL Server オブジェクト名の最大文字数を調べるその他の方法

    sp_server_info システムストアド プロシージャを使用する

    sp_server_info システムストアド プロシージャは、SQL Server インスタンスに関する情報を提供します。このプロシージャを使用して、MaxIdentifierLength パラメータ値を取得することで、現在の SQL Server バージョンで許可されるオブジェクト名の最大文字数を調べることができます。

    SELECT @MaxIdentifierLength = @@MaxIdentifierLength;
    
    PRINT '最大オブジェクト名長: ' + @MaxIdentifierLength;
    

    このコードを実行すると、現在の SQL Server バージョンで許可されるオブジェクト名の最大文字数が表示されます。

    SQL Server マネジメント スタジオを使用する

    SQL Server マネジメント スタジオを使用して、SQL Server インスタンスのプロパティを表示することもできます。オブジェクト名の最大文字数は、インスタンスのプロパティ ダイアログ ボックスの 詳細 ページに表示されます。

    1. SQL Server マネジメント スタジオで、接続する SQL Server インスタンスを選択します。
    2. オブジェクト エクスプローラーで、サーバー名 を右クリックします。
    3. コンテキスト メニューから プロパティ を選択します。
    4. インスタンスのプロパティ ダイアログ ボックスで、詳細 ページを選択します。
    5. 最大識別子長 の値を確認します。

    SQL Server PowerShellを使用する

    $SqlServer = Get-SqlServer -ComputerName localhost
    $MaxIdentifierLength = $SqlServer.MaxIdentifierLength
    
    Write-Output "最大オブジェクト名長: $MaxIdentifierLength"
    

    上記の方法のいずれかを使用して、SQL Server オブジェクト名の最大文字数を調べることができます。どの方法を使用するかは、個人の好みや要件によって異なります。


    sql-server sql-server-2008 t-sql


    SQL Server Profilerを使ってSQL Serverテーブルの変更をチェックする

    Change Trackingは、テーブルレベルで変更されたデータを追跡する機能です。有効にすると、どの行が挿入、更新、削除されたかを追跡できます。メリット比較的軽量な機能設定が簡単クエリで変更内容を取得できる変更されたデータの内容は追跡できない...


    SQL Server、データベース、同期:2つの独立したシステムを同期する方法

    レプリケーションは、データベースの変更を複製して、別のデータベースに反映する方法です。 主な利点は、データの冗長性と可用性の向上です。 1つのデータベースが故障しても、複製されたデータベースからデータを取り出すことができます。技術例:SQL Server レプリケーション: SQL Server には、トランザクション レプリケーション、スナップショット レプリケーション、マージ レプリケーションなど、さまざまなレプリケーション方法が用意されています。...


    SQL Server で主キーを設定する 5 つの方法

    データ型の種類SQL Server では、主キーとして使用できるデータ型はいくつかあります。代表的なものを以下に紹介します。整数型: int、bigint、smallint など文字列型: char、varchar、nchar、nvarchar など...


    .NET、SQL Server、ADO.NETにおけるSQLCommandパラメータ渡しのベストプラクティス

    .NET、SQL Server、ADO. NETを用いた開発において、SQLCommandオブジェクトにパラメータを渡すことは非常に一般的な操作です。しかし、最適な方法については、状況や要件によって異なるため、開発者を悩ませることがあります。...


    一時テーブルを使いこなす:SQL Serverにおける #temptable と ##TempTable の徹底解説

    SQL Serverでは、一時テーブルを作成するために #temptable と ##TempTable の構文を使用することができます。 どちらもセッションスコープの一時テーブルを作成しますが、いくつかの重要な違いがあります。#temptable...