次の方法で共有


一括インポートのロック動作の制御

更新 : 2005 年 12 月 5 日

bcp コマンド、BULK INSERT ステートメント、および INSERT ...SELECT * FROM OPENROWSET(BULK...) ステートメントを使用すると、一括インポート操作時にテーブルがロックされるように指定できます。

テーブル ロックを指定すると、一括インポート操作の実行中に一括更新テーブルレベル ロックが行われます。テーブルをロックすると、テーブルでのロック競合を低減することにより、一括インポート操作のパフォーマンスを向上させることができます。

テーブル ロックを使用しないと、table lock on bulk load オプションが on に設定されていない限り、既定では行レベル ロックが使用されます。sp_tableoption を使用して table lock on bulk load オプションを設定すると、一括インポート操作時のテーブルのロック動作が設定されます。

一括インポート時のテーブル ロック テーブル ロック動作

Off

行レベル ロックが使用されます。

On

テーブルレベル ロックが使用されます。

テーブル ロックを指定した場合、一括インポート操作の実行中に、sp_tableoption で設定されたテーブルの既定の設定が上書きされます。

ms180876.note(ja-jp,SQL.90).gifメモ :
複数のクライアントからテーブルにデータを並行して一括インポートするためにテーブル ロックを使用する必要はありませんが、テーブル ロックを使用するとパフォーマンスを向上させることができます。

コマンド修飾子

次の表は、一括インポート コマンドでテーブル ロックを指定するための修飾子をまとめたものです。

コマンド 修飾子 修飾子の種類

bcp

-h"TABLOCK"

ヒント

BULK INSERT

TABLOCK

引数

INSERT ...SELECT * FROM OPENROWSET(BULK...)

WITH(TABLOCK)

テーブル ヒント

ms180876.note(ja-jp,SQL.90).gifメモ :
SQL Server 2005 では、クラスタ化インデックス付きテーブルで TABLOCK を指定すると、データの並行一括インポートができなくなります。このようなケースで並行一括インポートを実行したい場合は、TABLOCK を使用しないでください。並行一括読み込みの詳細については、「一括インポートを最適化するためのガイドライン」を参照してください。

参照

概念

データベース エンジンのロック

その他の技術情報

bcp ユーティリティ
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
sp_tableoption (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手