一括インポートで最小ログ記録を行うための前提条件Prerequisites for Minimal Logging in Bulk Import

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

完全復旧モデルのデータベースの場合、一括インポート中に実行されるすべての行挿入操作が、トランザクション ログに完全に記録されます。For a database under the full recovery model, all row-insert operations that are performed by bulk import are fully logged in the transaction log. 完全復旧モデルを使用する場合、大きなデータをインポートするとトランザクション ログがすぐにいっぱいになってしまいます。Large data imports can cause the transaction log to fill rapidly if the full recovery model is used. これとは対照的に、単純復旧モデルまたは一括ログ復旧モデルでは、一括インポート操作の最小ログ記録を行うと、一括インポート操作によってログ領域がいっぱいになる可能性が少なくなります。In contrast, under the simple recovery model or bulk-logged recovery model, minimal logging of bulk-import operations reduces the possibility that a bulk-import operation will fill the log space. 最小ログ記録は完全ログ記録よりも効率的です。Minimal logging is also more efficient than full logging.

注意

一括ログ復旧モデルは、大量の一括操作中に完全復旧モデルの代わりとして一時的に使用するためのものです。The bulk-logged recovery model is designed to temporarily replace the full recovery model during large bulk operations.

一括インポート操作の最小ログ記録のためのテーブルの要件Table Requirements for Minimally Logging Bulk-Import Operations

最小ログ記録を行うテーブルは、次の条件を満たしている必要があります。Minimal logging requires that the target table meets the following conditions:

  • テーブルがレプリケート中でないこと。The table is not being replicated.

  • (TABLOCK を使用して) テーブル ロックが指定されていること。Table locking is specified (using TABLOCK).

    注意

    最小限のログ記録しか行われない一括インポート操作では、データを挿入してもトランザクション ログに記録されませんが、新しいエクステントがテーブルに割り当てられるたびに、データベース エンジンDatabase Engineによりエクステントの割り当てがログに記録されます。Although data insertions are not logged in the transaction log during a minimally logged bulk-import operation, the データベース エンジンDatabase Engine still logs extent allocations each time a new extent is allocated to the table.

  • テーブルは、メモリ最適化テーブルではありません。Table is not a memory-optimized table.

あるテーブルの最小ログ記録を行うことができるかどうかは、そのテーブルにインデックスがあるかどうか、また、インデックスが存在する場合はテーブルが空かどうかによっても異なります。Whether minimal logging can occur for a table also depends on whether the table is indexed and, if so, whether the table is empty:

  • テーブルにインデックスがない場合、データ ページの最小ログ記録が行われます。If the table has no indexes, data pages are minimally logged.

  • テーブルにクラスター化インデックスがなく、非クラスター化インデックスが 1 つ以上ある場合、データ ページは常に最小ログ記録が行われます。If the table has no clustered index but has one or more nonclustered indexes, data pages are always minimally logged. インデックス ページのログがどのように記録されるかは、テーブルが空かどうかにより異なります。How index pages are logged, however, depends on whether the table is empty:

    • テーブルが空の場合、インデックス ページは最小ログ記録が行われます。If the table is empty, index pages are minimally logged. 空のテーブルに複数のバッチのデータを一括インポートする場合、最初のバッチについてはインデックス ページとデータ ページの最小ログ記録が行われますが、2 番目以降のバッチはデータ ページのみの最小ログ記録が行われます。If you start with an empty table and bulk import the data in multiple batches, both index and data pages are minimally logged for the first batch, but beginning with the second batch, only data pages are minimally logged.

    • テーブルが空ではない場合、インデックス ページは完全ログ記録が行われます。If table is non-empty, index pages are fully logged.

  • テーブルが空で、クラスター化インデックスがある場合、データ ページとインデックス ページの最小ログ記録が行われます。If the table has a clustered index and is empty, both data and index pages are minimally logged. これと対照的に、空ではないテーブルに BTree ベースのクラスター化インデックスがある場合、いずれの復旧モデルであってもデータ ページとインデックス ページの完全ログ記録が行われます。In contrast, if a table has a btree based clustered index and is non-empty, data pages and index pages are both fully logged regardless of the recovery model. 空の行ストア テーブルにバッチのデータを一括インポートする場合、最初のバッチについてはインデックス ページとデータ ページの最小ログ記録が行われますが、2 番目以降のバッチはデータ ページのみ一括ログ記録が行われます。If you start with an empty table rowstore table and bulk import the data in batches, both index and data pages are minimally logged for the first batch, but from the second batch onwards, only data pages are bulk logged.

  • クラスター化列ストア インデックス (CCI) のログ記録の詳細については、「列ストア インデックス - データ読み込みガイダンス」を参照してください。For information about logging for a clustered columnstore index (CCI), see Columnstore index data loading guidance.

注意

トランザクション レプリケーションが有効な場合、BULK INSERT 操作は、一括ログ復旧モデルでも完全にログ記録されます。When transactional replication is enabled, BULK INSERT operations are fully logged even under the Bulk Logged recovery model.

関連タスクRelated Tasks

参照See Also

復旧モデル (SQL Server) Recovery Models (SQL Server)
bcp ユーティリティ bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
テーブル ヒント (Transact-SQL) Table Hints (Transact-SQL)
INSERT (Transact-SQL)INSERT (Transact-SQL)