Steuern des Sperrverhaltens für den Massenimport

Mit dem bcp-Befehl, der BULK INSERT-Anweisung und der INSERT ... SELECT * FROM OPENROWSET(BULK...) -Anweisung können Sie angeben, dass die Tabelle während eines Massenimportvorgangs gesperrt werden soll. Sperren sind ein Mechanismus, der von SQL Server Database Engine (Datenbankmodul) zum Synchronisieren des gleichzeitigen Zugriffs auf die gleichen Daten durch mehrere Benutzer verwendet wird. Wenn eine Transaktion Daten ändert, wird die Sperre, die die Änderung schützt, aufrechterhalten, bis die Transaktion abgeschlossen ist. Wenn Sie die Tabellensperre für einen Massenimportvorgang angeben, wird für die Dauer des Massenimportvorgangs eine Massenaktualisierungssperre (BU) eingerichtet. BU-Sperren ermöglichen es, in mehreren Threads gleichzeitig einen Massenimport von Daten in dieselbe Tabelle auszuführen, während anderen Prozessen, die keinen Massenimport ausführen, der Zugriff auf die Tabelle verweigert wird. Die Tabellensperre kann zu einer Leistungssteigerung während des Massenimportvorgangs führen, da Sperrkonflikte in der Tabelle reduziert werden.

Wird die Tabellensperre nicht verwendet, werden standardmäßig Sperren auf Zeilenebene verwendet, es sei denn, die Option table lock on bulk load wurde auf on festgelegt. Durch das Festlegen der Option table lock on bulk load mithilfe der gespeicherten Systemprozedur sp_tableoption wird das Sperrverhalten für eine Tabelle während eines Massenimportvorgangs festgelegt.

Table lock on bulk import

Tabellensperrverhalten

Off

Verwendung von Sperren auf Zeilenebene

On

Verwendung von Sperren auf Tabellenebene

Wenn die Tabellensperre angegeben ist, wird die Standardeinstellung sp_tableoption für die Tabelle für die Dauer des Massenimportvorgangs außer Kraft gesetzt.

HinweisHinweis

Es ist nicht notwendig, die Tabellensperre für den Massenimport von Daten in eine Tabelle aus mehreren parallelen Clients zu verwenden, obwohl die Leistung dadurch verbessert werden kann.

Befehlsqualifizierer

In der folgenden Tabelle werden die Qualifizierer zum Angeben der Tabellensperre in Massenimportbefehlen zusammengefasst.

Befehl

Qualifizierer

Qualifizierertyp

bcp

-h"TABLOCK"

Hinweis

BULK INSERT

TABLOCK

Argument

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

WITH(TABLOCK)

Tabellenhinweis

HinweisHinweis

Durch das Angeben von TABLOCK für eine Tabelle mit einem gruppierten Index in SQL Server 2005 und höheren Versionen wird das parallele Massenimportieren von Daten verhindert. Wenn Sie in diesem Fall einen parallelen Massenimport durchführen möchten, verwenden Sie nicht TABLOCK. Weitere Informationen zum parallelen Massenladen finden Sie unter Richtlinien zur Optimierung von Massenimport.