共用方式為


控制大量匯入的鎖定行為

更新: 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(zh-tw,SQL.90).gif附註:
從多個用戶端以平行方式大量匯入資料到資料表時,並非一定要使用資料表鎖定,但這樣做可以提升效能。

命令限定詞

下表彙總了在大量匯入命令中用來指定資料表鎖定的限定詞。

命令 限定詞 限定詞類型

bcp

-h"TABLOCK"

提示

BULK INSERT

TABLOCK

引數

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

WITH(TABLOCK)

資料表提示

ms180876.note(zh-tw,SQL.90).gif附註:
在 SQL Server 2005 中,在具有叢集索引的資料表上指定 TABLOCK 可防止以平行方式大量匯入資料。在此狀況下,如果想要執行平行大量匯入,請不要使用 TABLOCK。如需有關以平行方式大量載入的詳細資訊,請參閱<最佳化大量匯入的指導方針>。

請參閱

概念

Database Engine 中的鎖定

其他資源

bcp 公用程式
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
sp_tableoption (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助