Prerequisites for Minimal Logging in Bulk ImportPrerequisites for Minimal Logging in Bulk Import

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Para um banco de dados no modelo de recuperação completa, todas as operações de inserção de linha executadas pela importação em massa são registradas completamente no log de transações.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. Importações de grandes volumes de dados poderão fazer o log de transações ficar cheio rapidamente se o modelo de recuperação completa for usado.Large data imports can cause the transaction log to fill rapidly if the full recovery model is used. Por outro lado, no modelo de recuperação simples ou no modelo de recuperação bulk-logged, o log mínimo de operações de importação em massa reduz a possibilidade de uma operação de importação em massa preencher o espaço do log.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. O log mínimo também é mais eficiente que o log completo.Minimal logging is also more efficient than full logging.

Observação

O modelo de recuperação bulk-logged foi projetado para substituir temporariamente o modelo de recuperação completa durante operações em massa de grande porte.The bulk-logged recovery model is designed to temporarily replace the full recovery model during large bulk operations.

Requisitos de tabela para operações de importação em massa com log mínimoTable Requirements for Minimally Logging Bulk-Import Operations

O log mínimo requer que a tabela de destino atenda às seguintes condições:Minimal logging requires that the target table meets the following conditions:

  • A tabela não está sendo reproduzida.The table is not being replicated.

  • O bloqueio da tabela é especificado (usando TABLOCK).Table locking is specified (using TABLOCK). Para a tabela com um índice columnstore clusterizado, o TABLOCK não é necessário para o log mínimo.For table with clustered columnstore index, you don't need TABLOCK for minimal logging. Além disso, somente os dados carregados nos grupos de linhas compactados são minimamente registrados, exigindo um tamanho de lote de 102400 ou superior.Additionally, only the data loaded into compressed rowgroups is minimally logged requiring a batchsize of 102400 or higher.

    Observação

    Embora as inserções de dados não sejam registradas no log de transações durante uma operação da importação com log em massa, o Mecanismo de Banco de DadosDatabase Engine ainda faz o log de alocações de extensão cada vez que uma nova extensão é alocada à tabela.Although data insertions are not logged in the transaction log during a minimally logged bulk-import operation, the Mecanismo de Banco de DadosDatabase Engine still logs extent allocations each time a new extent is allocated to the table.

  • A tabela não é do tipo com otimização de memória.Table is not a memory-optimized table.

A possibilidade de ocorrência de log mínimo em uma tabela também poderá depender se a tabela estiver indexada e, nesse caso, se a tabela estiver vazia:Whether minimal logging can occur for a table also depends on whether the table is indexed and, if so, whether the table is empty:

  • Se a tabela não tiver nenhum índice, as páginas de dados terão log mínimo.If the table has no indexes, data pages are minimally logged.

  • Se a tabela não tiver nenhum índice clusterizado, mas tiver um ou mais índices não clusterizados, as páginas de dados sempre terão log mínimo.If the table has no clustered index but has one or more nonclustered indexes, data pages are always minimally logged. No entanto, a forma como as páginas de índice são registradas depende da tabela:How index pages are logged, however, depends on whether the table is empty:

    • Se a tabela estiver vazia, a páginas de índice terão log mínimo.If the table is empty, index pages are minimally logged. Se você iniciar com uma tabela vazia e importar os dados em massa em vários lotes, para o primeiro lote as páginas de índice e as páginas de dados terão log mínimo, mas começando com o segundo lote, só as páginas de dados terão log mínimo.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.

    • Se a tabela não estiver vazia, as páginas de índice terão log completo.If table is non-empty, index pages are fully logged.

  • Se a tabela tiver um índice clusterizado e estiver vazia, ambas as páginas de dados e de índice terão log mínimo.If the table has a clustered index and is empty, both data and index pages are minimally logged. Por outro lado, se uma tabela tiver um índice clusterizado baseado na árvore b e não estiver vazia, as páginas de dados e as páginas de índice terão um log completo, independentemente do modelo de recuperação.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. Se você iniciar com uma tabela rowstore vazia e importar em massa os dados em lotes, as páginas de índice e de dados serão registradas minimamente para o primeiro lote, mas do segundo lote em diante, somente as páginas de dados serão registradas em massa.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.

  • Para obter informações sobre como registrar em log um CCI (índice columnstore clusterizado), consulte Diretrizes de carregamento de dados de índice columnstore.For information about logging for a clustered columnstore index (CCI), see Columnstore index data loading guidance.

Observação

Quando a replicação transacional está habilitada, as operações BULK INSERT são completamente registradas mesmo no modelo de recuperação bulk-logged.When transactional replication is enabled, BULK INSERT operations are fully logged even under the Bulk Logged recovery model.

Tarefas relacionadasRelated Tasks

Consulte TambémSee Also

Modelos de recuperação (SQL Server) Recovery Models (SQL Server)
Utilitário 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)
Dicas de tabela (Transact-SQL) Table Hints (Transact-SQL)
INSERT (Transact-SQL)INSERT (Transact-SQL)