次の方法で共有


WRITETEXT (Transact-SQL)

既存の text、ntext、または image 列の最小限ログに記録する対話型の更新を許可します。WRITETEXT は、影響のある列内の既存のすべてのデータを上書きします。WRITETEXT をビュー内の text 列、ntext 列、image 列に対して使用することはできません。

重要な注意事項重要

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、大きな値のデータ型と UPDATE ステートメントの WRITE 句を使用してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

WRITETEXT [BULK]
    { table.column text_ptr }
    [ WITH LOG ] { data }

引数

  • BULK
    アップロード ツールによるバイナリ データ ストリームのアップロードを有効にします。ストリームは、TDS プロトコル レベルでツールが提供する必要があります。データ ストリームが存在しない場合、クエリ プロセッサは BULK オプションを無視します。

    重要な注意事項重要

    SQL Server ベースのアプリケーションでの BULK オプションの使用はお勧めしません。このオプションは将来のバージョンの SQL Server では変更または削除される可能性があります。

  • table**.**column
    テーブルおよび更新する text、ntext、または image 列の名前です。テーブル名と列名は、識別子のルールに従っている必要があります。データベース名と所有者名の指定は省略可能です。

  • text_ptr
    text、ntext、または image データへのポインターを保存する値です。text_ptr は binary(16) にする必要があります。テキスト ポインターを作成するには、text、ntext、または image 列に対して NULL 以外のデータを使用する INSERT または UPDATE ステートメントを実行します。

  • WITH LOG
    SQL Server では無視されます。ログ記録は、データベースで有効になっている復旧モデルによって異なります。

  • data
    実際に格納される text、ntext、または image データです。data はリテラルまたはパラメーターです。WRITETEXT を使用して対話的に挿入可能なテキスト長の最大値は、text データ、ntext データ、および image データで約 120 KB です。

説明

WRITETEXT を使用して text、ntext、および image データを置き換え、UPDATETEXT を使用して text、ntext、および image データを変更します。UPDATETEXT は、text、ntext、または image 列の全体ではなく一部のみを変更するため柔軟性があります。

最高のパフォーマンスが得られるよう、8,040 バイトの倍数の単位で text、ntext、および image データを挿入または更新することをお勧めします。

データベース復旧モデルが単純復旧モデルまたは一括ログ復旧モデルである場合は、新しいデータを挿入または追加するときに、WRITETEXT を使用する text、ntext、および image 操作は最小限しかログに記録されません。詳細については、「最小ログ記録が可能な操作」を参照してください。

注意

既存の値を更新するときには、最小限のログ記録は使用されません。

WRITETEXT が正しく機能するためには、その列は既に有効なテキスト ポインターを含んでいる必要があります。

テーブルに行内テキストがない場合、SQL Server は、明示的または暗黙的な NULL 値が INSERT によって text 列に挿入されているときに text 列の初期化を省略することによって領域を節約しますが、そのような NULL に対するテキスト ポインターは取得できません。text 列を初期化して NULL にするには、UPDATE ステートメントを使用します。テーブルに行内テキストがある場合、テキスト列を初期化して NULL にする必要はなく、常にテキスト ポインターを取得できます。

ODBC SQLPutData 関数は、WRITETEXT に比べ高速で、使用する動的メモリの量も少なくなります。この関数は、最大 2 GB までの text、ntext、または image データを挿入できます。

SQL Server では、text、ntext、または image データへの行内テキスト ポインターが存在しても、無効になる場合があります。text in row オプションについては、「sp_tableoption (Transact-SQL)」を参照してください。テキスト ポインターの無効化の詳細については、「sp_invalidate_textptr (Transact-SQL)」を参照してください。

権限

指定されたテーブルに対する UPDATE 権限が必要です。UPDATE 権限が転送されるときに、この権限は譲渡できます。

次の例では、テキスト ポインターをローカル変数 @ptrval に置き、@ptrval が指す行に WRITETEXT で新しいテキスト文字列を入れます。

注意

この例を実行するには、pubs サンプル データベースをインストールする必要があります。pubs サンプル データベースのインストール方法の詳細については、「Northwind サンプル データベースと pubs サンプル データベースのダウンロード」を参照してください。

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id 
   AND p.pub_name = 'New Moon Books'
WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!';
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO