大きな値のデータ型の使用
max 指定子は、varchar、nvarchar、および varbinary の各データ型の格納力を拡張します。varchar(max)、nvarchar(max)、および varbinary(max) は、総称して大きな値のデータ型と呼びます。大きな値のデータ型を使用すると、最大で 2^31-1 バイトのデータを格納できます。
注 |
---|
sp_tableoption ストアド プロシージャの large value types out of row オプションが OFF に設定されている場合、大きな値のデータ型の行内のストレージは 8,000 バイトに制限されます。このオプションが ON に設定されている場合は、行内に 16 バイトのルートが格納されます。詳細については、「sp_tableoption (Transact-SQL)」を参照してください。 |
注 |
---|
データをレプリケートする場合は、max text repl size オプション を -1 に設定することが必要になる場合があります。 |
大きな値のデータ型の動作は、それらに相当するより小さな値の各データ型 varchar、nvarchar、および varbinary と変わりありません。この類似性により、SQL Server では、大きなサイズの文字データ、Unicode データ、およびバイナリ データをより効率的に格納したり、取得したりすることができます。
SQL Server では、大きな値のデータ型を使用すると、以前のバージョンの SQL Server のデータ型である text、ntext、および image では不可能だった操作を実行できます。大量のデータ (最大で 2^31-1 バイトの文字データ、バイナリ データ、および Unicode データ) を格納できる変数を定義できます。詳細については、「Transact-SQL 変数」を参照してください。
次の表は、大きな値のデータ型と、それらに相当する以前のバージョンの SQL Server の各データ型との関係を示しています。
大きな値のデータ型 |
以前のバージョンの LOB |
---|---|
varchar(max) |
text* |
nvarchar(max) |
ntext* |
varbinary(max) |
image |
* SQL Server Version 6.5 クライアントでは、ntext データ型がサポートされないので、nvarchar(max) が認識されません。
重要 |
---|
text、ntext、および image データ型ではなく、varchar(max)、nvarchar(max)、および varbinary(max) データ型を使用します。 |
大きな値のデータ型の動作は、それらに相当するより小さな値のデータ型である varchar(n)、nvarchar(n)、および varbinary(n) と変わりありません。次に、一部の特定のシナリオでの大きな値のデータ型の使用について説明します。
カーソル
大きな値のデータ型の変数を定義できるので、FETCH の大きな値のデータ型の列から取得したデータはローカル変数に格納できます。詳細については、「FETCH (Transact-SQL)」を参照してください。
大きな値のデータ型を使用しても、カーソルの種類の変換を強制するカーソルの使用方法には影響しません。
大量の更新
UPDATE ステートメントでは、基になる大きな値のデータ列に対して部分更新を実行する **.**WRITE( ) 句がサポートされるようになりました。これは、WRITETEXT および UPDATETEXT のテキスト ポインター操作と同様です。WRITETEXT および UPDATETEXT は、以前のバージョンの SQL Server の text、ntext、image データ型でサポートされています。詳細については、「UPDATE (Transact-SQL)」を参照してください。
トリガー
inserted テーブルと deleted テーブルの大きな値のデータ型の列参照では AFTER トリガーを使用できます。詳細については、「CREATE TRIGGER (Transact-SQL)」を参照してください。
文字列関数
文字データやバイナリ データを操作できる組み込みの文字列関数が強化され、引数として大きな値のデータ型をサポートするようになりました。次の関数はその例です。
文字列関数の詳細については、「文字列関数 (Transact-SQL)」を参照してください。