大きな値のデータ型の使用

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)」を参照してください。