SQL Server 2008/2017/2019: テーブル名、列名、プロシージャ名の長さ制限を一挙公開!
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 インスタンスのプロパティを表示することもできます。オブジェクト名の最大文字数は、インスタンスのプロパティ ダイアログ ボックスの 詳細 ページに表示されます。
- SQL Server マネジメント スタジオで、接続する SQL Server インスタンスを選択します。
- オブジェクト エクスプローラーで、サーバー名 を右クリックします。
- コンテキスト メニューから プロパティ を選択します。
- インスタンスのプロパティ ダイアログ ボックスで、詳細 ページを選択します。
- 最大識別子長 の値を確認します。
SQL Server PowerShellを使用する
$SqlServer = Get-SqlServer -ComputerName localhost
$MaxIdentifierLength = $SqlServer.MaxIdentifierLength
Write-Output "最大オブジェクト名長: $MaxIdentifierLength"
上記の方法のいずれかを使用して、SQL Server オブジェクト名の最大文字数を調べることができます。どの方法を使用するかは、個人の好みや要件によって異なります。
sql-server sql-server-2008 t-sql