Controlando o comportamento de bloqueio para a importação em massa

O comando bcp, a instrução BULK INSERT e INSERT... e a instrução SELECT * FROM OPENROWSET(BULK...) lhe permitem especificar que a tabela seja bloqueada durante uma operação de importação em massa. O bloqueio é usado pelo SQL Server Mecanismo de Banco de Dados para sincronizar o acesso simultâneo de vários usuários a mesma parte dos dados. Quando uma transação modifica uma parte dos dados, ela mantém o bloqueio protegendo a modificação até o fim da transação. Ao especificar o bloqueio de tabela para uma operação de importação em massa, um bloqueio de atualização em massa (BU) é ativado durante a operação de importação em massa. Um bloqueio de BU permite que vários threads importem dados em massa simultaneamente para a mesma tabela, ao mesmo tempo em que impede que outros processos que não sejam dados da importação em massa acessem a tabela. O bloqueio de tabela pode melhorar o desempenho da operação de importação em massa reduzindo a contenção de bloqueio na tabela.

Se o bloqueio de tabela não for usado, o padrão usará bloqueios em nível de linha, a menos que a opção table lock on bulk load seja definida como on. Definindo-se a opção table lock on bulk load usando sp_tableoption define o comportamento de bloqueio para uma tabela durante uma operação de importação em massa.

Bloqueio de tabela em importação em massa

Comportamento de bloqueio de tabela

Desativado

Bloqueios de nível de linha usados

Em

Bloqueio de nível de tabela usado

Se o bloqueio de tabela for especificado, a configuração padrão para o conjunto de tabelas com sp_tableoption será substituído durante a operação de importação em massa.

ObservaçãoObservação

Não é necessário usar bloqueio de tabela para importar dados em massa para uma tabela de vários clientes em paralelo, mas isso pode melhorar o desempenho.

Qualificadores de comando

A tabela a seguir resume os qualificadores especificando-se bloqueio de tabela em comandos de importação em massa.

Comando

Qualificador

Tipo de qualificador

bcp

-h"TABLOCK"

Dica

BULK INSERT

TABLOCK

Argumento

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

WITH(TABLOCK)

Dica de tabela

ObservaçãoObservação

Em versões do SQL Server 2005 e posteriores, ao especificar-se TABLOCK em uma tabela com um índice clusterizado evita-se a importação de dados em massa em paralelo. Nesse caso, se você quiser executar uma importação em massa em paralelo, não use TABLOCK. Para obter mais informações sobre carregamento em massa em paralelo, consulte Diretrizes para otimizar a importação em massa.