SQL Serverでこんなエラーが出てしまった。
警告:最大キー長は 900バイトです。インデックス xxx の最大長は1036バイトです。一部の大きな値の組み合わせでは、挿入操作または更新操作が失敗します。
んん?
SQL Server の最大容量仕様
調べてみると、マイクロソフトの公式サイトにSQL Serverの最大容量の仕様が書いてありました。
SQL Server の最大容量仕様 - SQL Server
この記事では、SQL Server コンポーネントで定義される各種オブジェクトの最大サイズと最大数を追加情報と共に示します。
SQL Server データベースで定義される各種オブジェクト、または Transact-SQL ステートメントで参照される各種オブジェクトの最大サイズと最大数。
- 外部キーごとのバイト数 900 バイト
- 主キーごとのバイト数 900 バイト
これは仕様なので変更できません。
データベースの設計を改めましょう。
データベースの設計でカラムのサイズを小さくする
私の場合、こんな風にプライマリキーのサイズが大きくなっていたことが原因。
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE [dbo].[M_Address]( [designID] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](255) NOT NULL, [Telephone][nvarchar](255) NOT NULL, [Address] [nvarchar](512) NOT NULL, CONSTRAINT [PK_M_Address] PRIMARY KEY CLUSTERED ( [ID] ASC, [Name] ASC, [Telephone] ASC, [Address] ASC ) |
再設計をするか。。
SQL Server では、すべてのインデックス キー列の最大合計サイズは 900 バイトに制限される。
と覚えておこう。
コメント