Voraussetzungen für die minimale Protokollierung beim Massenimport
Gilt für: SQL Server
Für eine Datenbank, bei der das vollständige Wiederherstellungsmodell verwendet wird, werden alle beim Massenimport ausgeführten Vorgänge für das Einfügen von Zeilen vollständig im Transaktionsprotokoll protokolliert. Bei umfangreichen Datenimporten kann das Transaktionsprotokoll schnell aufgefüllt werden, wenn das vollständige Wiederherstellungsmodell verwendet wird. Im Gegensatz dazu reduziert die minimale Protokollierung von Massenimportvorgängen beim einfachen Wiederherstellungsmodell oder beim massenprotokollierten Wiederherstellungsmodell die Gefahr eines Überlaufs des Protokollspeichers durch einen Massenimportvorgang. Darüber hinaus ist die minimale Protokollierung effizienter als die vollständige Protokollierung.
Hinweis
Das massenprotokollierte Wiederherstellungsmodell wurde entwickelt, um das vollständige Wiederherstellungsmodell während umfangreicher Massenvorgänge vorübergehend zu ersetzen.
Tabellenanforderungen für die minimale Protokollierung bei Massenimportvorgängen
Für die minimale Protokollierung muss die Zieltabelle die folgenden Bedingungen erfüllen:
Die Tabelle wird nicht repliziert.
Eine Tabellensperre ist angegeben (mit TABLOCK).
Hinweis
Obwohl Dateneinfügungen bei einem minimal protokollierten Massenimportvorgang nicht im Transaktionsprotokoll protokolliert werden, protokolliert die Datenbank-Engine dennoch Blockzuordnungen, wenn der Tabelle ein neuer Block zugeordnet wird.
Die Tabelle ist keine speicheroptimierte Tabelle.
Ob die minimale Protokollierung für eine Tabelle möglich ist, hängt auch davon ab, ob die Tabelle indiziert ist und, falls dies der Fall ist, ob die Tabelle leer ist:
Wenn die Tabelle keine Indizes besitzt, werden die Datenseiten minimal protokolliert.
Falls die Tabelle keinen gruppierten Index, aber mindestens einen nicht gruppierten Index aufweist, werden die Datenseiten immer minimal protokolliert. Wie Indexseiten protokolliert werden, hängt jedoch davon ab, ob die Tabelle leer ist:
Falls die Tabelle leer ist, werden Indexseiten minimal protokolliert. Wenn Sie mit einer leeren Tabelle beginnen und die Daten in mehreren Batches massenimportieren, werden für den ersten Batch sowohl Index- als auch Datenseiten minimal protokolliert. Ab dem zweiten Batch jedoch werden nur Datenseiten minimal protokolliert.
Falls die Tabelle nicht leer ist, werden Indexseiten vollständig protokolliert.
Wenn einer der Indizes IGNORE_DUP_KEY = EIN hat, werden Index- und Datenseiten vollständig protokolliert.
Falls die Tabelle einen gruppierten Index aufweist und leer ist, werden Daten- und Indexseiten minimal protokolliert. Wenn dagegen eine Tabelle einen B-Baum-basierten gruppierten Index aufweist und nicht leer ist, werden Daten- und Indexseiten unabhängig vom Wiederherstellungsmodell vollständig protokolliert. Wenn Sie mit einer leeren Rowstore-Tabelle beginnen und die Daten in Batches massenimportieren, werden für den ersten Batch sowohl Index- als auch Datenseiten minimal protokolliert. Ab dem zweiten Batch werden jedoch nur Datenseiten massenprotokolliert.
Hinweis
In der Dokumentation wird der Begriff „B-Struktur“ im Allgemeinen in Bezug auf Indizes verwendet. In Zeilenspeicherindizes implementiert die Datenbank-Engine eine B+-Struktur. Das gilt nicht für Columnstore-Indizes oder Indizes in speicheroptimierten Tabellen. Weitere Informationen finden Sie im Leitfaden zur Architektur und zum Entwerfen von SQL Server- und Azure SQL-Indizes.
Informationen zur Protokollierung für einen gruppierten Columnstore-Index finden Sie im Leitfaden zum Laden von Daten in einen Columnstore-Index.
Hinweis
Wenn die Transaktionsreplikation aktiviert ist, werden BULK INSERT-Vorgänge auch unter dem massenprotokollierten Wiederherstellungsmodell vollständig protokolliert.
Siehe auch
- Wiederherstellungsmodelle (SQL Server)
- bcp (Hilfsprogramm)
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- BACKUP (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- Tabellenhinweise (Transact-SQL)
- INSERT (Transact-SQL)