1> create table t1 (
2> a char(8000)
3> ,b char(61)
4> );
5> go
メッセージ 1701、レベル 16、状態 1、サーバー GUNTRA、行 1
7 バイトの内部オーバーヘッドを含めて、最小行サイズが 8068 になるので、テーブル 't1' を作成または変更できませんでした。こ
のサイズは、テーブル行の最大許容サイズの 8060 バイトを超えています。
1> create table t1 (
2> a char(8000)
3> ,b char(60)
4> );
5> go
メッセージ 1701、レベル 16、状態 1、サーバー GUNTRA、行 1
7 バイトの内部オーバーヘッドを含めて、最小行サイズが 8067 になるので、テーブル 't1' を作成または変更できませんでした。こ
のサイズは、テーブル行の最大許容サイズの 8060 バイトを超えています。
1> create table t1 (
2> a char(8000)
3> ,b char(54)
4> );
5> go
メッセージ 1701、レベル 16、状態 1、サーバー GUNTRA、行 1
7 バイトの内部オーバーヘッドを含めて、最小行サイズが 8061 になるので、テーブル 't1' を作成または変更できませんでした。こ
のサイズは、テーブル行の最大許容サイズの 8060 バイトを超えています。
1> create table t1 (
2> a char(8000)
3> ,b char(53)
4> );
5> go
1> drop table t1;
2> go
1>
1レコードは 8060バイト 8053バイトらしい。
1> create table t2 (
2> a varchar(8000)
3> ,b varchar(61)
4> );
5> go
1> insert into t2 values(space(8000), space(61));
2> go
(1 行処理されました)
1>
でもVARCHAR型で定義するなら大丈夫。きっちりレコードのINSERTもできたっぽい。
1> create table t3 (
2> a varchar(8000)
3> ,b varchar(8000)
4> ,c varchar(8000)
5> );
6> go
1> insert into t3 values(space(8000), space(8000), space(8000));
2> go
(1 行処理されました)
1>
合計で 8000×3=24000バイトなのですが、あらら、INSERT出来たみたいです。
でも、項目の最大長は8000バイトですので、24000バイトの指定はエラーになります。
1> create table t4 (
2> a varchar(24000)
3> );
4> go
メッセージ 131、レベル 15、状態 2、サーバー GUNTRA、行 2
列 'a' に指定したサイズ (24000) は、どのデータ型の許容最大サイズ (8000) も超えています。
1> create table t4 (
2> a varchar(max)
3> );
4> go
1> insert into t4 values(space(48000));
2> go
(1 行処理されました)
1>
しかし、長さ指定で “max” を使うと、その指定をした項目は2GBまで扱えます。