text 型データと image 型データの使用

ms189574.note(ja-jp,SQL.90).gif重要 :
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代替のデータ型は varchar(max)nvarchar(max)、および varbinary(max) です。詳細については、「大きな値のデータ型の使用」を参照してください。

Microsoft SQL Server 2005 では、8,000 文字を超える文字列や 8,000 バイトより長いバイナリ データは text および image という名前の特殊なデータ型に格納されます。4,000 文字を超える Unicode 文字列は ntext データ型に格納されます。

たとえば、SQL Server データベースにインポートする必要がある顧客情報が格納された大きなテキスト ファイル (.txt) があるとします。このデータをデータ テーブルの複数の列に統合するのではなく、1 つのデータとして格納します。この場合は、text データ型の列を 1 つ作成します。1 つのロゴの大きさが 10 KB である会社のロゴが、現在 TIFF (Tagged Image File Format) イメージ (.tif) として格納されているとします。このロゴを格納するには image データ型の列を 1 つ作成します。

格納されるテキスト データが Unicode 形式の場合は ntext データ型を使用します。たとえば、海外の複数の顧客向けに同文の手紙を作成する場合、各言語に特有の綴りや文字が含まれることがあります。これらのデータは ntext 型列に格納します。

text 型と ntext 型のデータ値には、それぞれ照合順序があります。照合順序では、比較の規則、大文字小文字やアクセントの区別などの属性が定義されます。text 型の値の照合順序では、コード ページも定義されます。コード ページでは、各文字を表現するために使用するビット パターンが定義されます。ntext 型の各値には Unicode コード ページが使用されます。このコード ページはすべての照合順序で同一です。各データベースには既定の照合順序があります。text 型または ntext 型の列が作成されるときに、COLLATE 句を使って特定の照合順序を割り当てていない場合は、データベースの既定の照合順序が割り当てられます。照合順序が異なる text 型または ntext 型の 2 つの値が結合または比較される場合、照合順序の優先順位に関する規則により、操作に使用される照合順序が決まります。

image 型のデータはビット列として格納され、SQL Server ではこのデータは解釈されません。image 型の列内のデータは、アプリケーションで解釈する必要があります。たとえば、アプリケーションは、BMP、TIFF、GIF、または JPEG の各形式を使用して image 型の列にデータを格納できます。image 型の列からデータを読み取るアプリケーションでは、データ形式を正しく認識し、正確に表示する必要があります。image 型の列は、イメージ データ値を構成するビット列の格納場所を提供するだけです。

text 型、ntext 型、および image 型の値の格納に使用する行のテキスト

通常、text 型、ntext 型の文字列、または image 型のビット列は、データ行の外部に格納される大きな文字列またはバイナリ列で、最大 2 GB です。データ行には、ツリーのルート ノードを指す 16 バイトのテキスト ポインタだけが含まれます。このツリーは、文字列の一部が格納される各ページにマップされた複数の内部ポインタから構築されます。

SQL Server では、小~中程度の量の text 型、ntext 型、または image 型の値をデータ行に格納することができ、これらのデータにアクセスするクエリの速度を向上できます。

text 型、ntext 型、または image 型の文字列をデータ行に格納するときに、SQL Server では、文字列の読み取り、書き込みのために個別のページやページのセットにアクセスする必要はありません。これにより、text 型、ntext 型、または image 型の行内の文字列の読み取りと書き込みが、varchar 型、nvarchar 型、または varbinary 型の文字列の読み取りや書き込みと同程度に高速になります。

text 型、ntext 型、または image 型の文字列をデータ行に格納するには、sp_tableoption ストアド プロシージャを使用して text in row オプションを有効にします。

sp_tableoption N'MyTable', 'text in row', 'ON'

必要に応じて、データ行に格納される text 型、ntext 型、および image 型の文字列またはビット列の長さの最大値を 24 ~ 7,000 バイトの範囲で指定できます。

sp_tableoption N'MyTable', 'text in row', '1000'

制限値を指定する代わりに 'ON' を指定すると、既定で 256 バイトに設定されます。多くの場合、この既定値でもパフォーマンス上の利点が得られます。この値は、短い文字列とルート テキスト ポインタを行に確実に格納するには十分な大きさですが、1 ページあたりの行数が減少してパフォーマンスに影響するほどの大きさではありません。

通常は 72 未満の値を設定しないでください。また、極端に大きい値も設定しないでください。特に、ほとんどのステートメントが text 型、ntext, 型、および image 型の列を参照しないテーブルや、複数の text 型、ntext 型、および image 型の列があるテーブルの場合には、極端に大きい値は設定しないでください。

sp_tableoption オプションに値 'OFF' または 0 を指定することで、このオプションをオフにすることもできます。

sp_tableoption N'MyTable', 'text in row', 'OFF'

参照

概念

char 型と varchar 型のデータの使用

その他の技術情報

データ型 (Transact-SQL)
sp_tableoption (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手