Partilhar via


Tarefa Inserção em Massa

A tarefa de inserção em massa fornece um modo eficiente para copiar grandes volumes de dados em uma tabela ou exibição do SQL Server. Por exemplo, suponha que a empresa armazena sua lista de produtos em milhões de linhas em um sistema de mainframe, mas o sistema de comércio eletrônico da empresa usa o SQL Server para preencher páginas da Web. Você deve atualizar a tabela de produtos do SQL Server todas as noites com a lista principal de produtos do mainframe. Para atualizar a tabela, você salva a lista de produtos em um formato delimitado por guia e usa a tarefa de inserção em massa para copiar os dados diretamente na tabela do SQL Server.

Para assegurar a cópia de dados em alta velocidade, não podem ser executadas transformações nos dados enquanto estiver transferindo do arquivo de origem à tabela ou exibição.

Você pode configurar a tarefa de inserção em massa das seguintes formas:

  • Especifique o gerenciador de conexões do OLE DB para conectar-se ao banco de dados do SQL Server de destino e à tabela ou exibição nos quais estão inseridos os dados. A tarefa de inserção em massa aceita apenas conexões do OLE DB para o banco de dados de destino.

  • Especifique o gerenciador de conexões do Arquivo ou Arquivo Simples para acessar o arquivo de origem. A tarefa de inserção em massa usa o gerenciador de conexões apenas para o local do arquivo de origem. A tarefa ignora outras opções que você selecionar no editor do gerenciador de conexões.

  • Defina o formato que é usado pela tarefa de inserção em massa que usa um arquivo de formato ou, definindo os delimitadores de coluna e fila dos dados de origem. Se estiver usando um arquivo de formato, especifique o gerenciador de conexões do Arquivo para acessar o arquivo de formato.

  • Especifique as ações para realizar na tabela de destino ou de exibição quando a tarefa inserir os dados. As opções incluem se devemos verificar restrições, habilitar inserções de identidade, manter nulos, acionar gatilhos ou fechar a tabela.

  • Forneça informações sobre o lote de dados a inserir, tais como o tamanho do lote, a primeira e a última linha do arquivo a inserir, o número de erros de inserção que podem acontecer antes que a tarefa pare de inserir linhas e os nomes das colunas que serão ordenadas.

Se a tarefa de inserção em massa usar um gerenciador de conexões do Arquivo Simples para acessar o arquivo de origem, a tarefa não usa o formato especificado no gerenciador de conexões do Arquivo Simples. Em vez disso, a tarefa de Inserção em massa usa o formato especificado em um arquivo de formato ou os valores das propriedades da tarefa do RowDelimiter e do ColumnDelimiter.

Considerações de uso

Antes de utilizar a tarefa de inserção em massa , considere o seguinte:

  • A tarefa de Inserção em massa só pode transferir dados de um arquivo de texto em uma tabela ou de exibição do SQL Server. Para utilizar a tarefa de inserção em massa para transferir dados de outros sistemas de gerenciamento de bancos de dados (DBMSs), você deve exportar os dados da fonte para um arquivo de texto e então importar os dados do arquivo de texto para uma tabela ou exibição do SQL Server.

  • O destino deve ser uma tabela ou exibição em um banco de dados do SQL Server. Se a tabela ou exibição de destino já contém dados, os novos dados são anexados aos dados existentes quando a tarefa de inserção em massa é executada. Se você quiser substituir os dados, execute uma tarefa Execute SQL que executa uma instrução de DELETE ou TRUNCATE antes de você executar a tarefa de Inserção em massa . Para obter mais informações, consulte Tarefa Executar SQL de SSI.

  • Você pode usar um arquivo de formato no objeto de tarefa da inserção em massa . Se você tiver um arquivo de formato que foi criado pelo utilitário do bcp, você poderá especificar seu caminho na tarefa de inserção em massa . A tarefa de inserção em massa fornece suporte tanto para arquivos em formato XML quanto não XML. Para obter mais informações sobre arquivos de formatos, consulte Arquivos de formato para importação ou exportação de dados.

  • Só membros com função de servidor definidos no sysadmin podem executar um pacote que contenha uma tarefa de inserção em massa .

Utilizando a tarefa de inserção em massa com Transações

Se um tamanho de lote não for definido, toda a operação de cópia em massa é tratada como uma transação. Um tamanho de lote de 0 indica que os dados são inseridos em um lote. Se um tamanho de lote for definido, cada lote representa uma transação que é confirmada quando o lote terminar de ser executado. Para obter mais informações, consulte Transações implícitas.

O comportamento da tarefa de inserção em massa , à medida que se relaciona com as transações, leva em conta se a tarefa une a transação de pacotes. Se a tarefa de inserção em massa não unir a transação de pacotes, cada lote sem-erros está confirmado como uma unidade antes que o próximo lote seja tentado. Se a tarefa de inserção em massa unir a transação de pacotes, lotes sem-erros permanecem na transação na conclusão da tarefa. Esses lotes estão sujeitos à confirmação ou operação de reversão do pacote.

Uma falha na tarefa de inserção em massa não reverte automaticamente com êxito os lotes carregados, assim como, se a tarefa tiver êxito, os lotes não serão confirmados automaticamente. As operações de confirmação e reversão ocorrem apenas em resposta ao pacote e às configurações de propriedade de fluxo de trabalho.

Especificando a origem e o destino

Quando você especificar o local do arquivo de origem de texto, considere o seguinte:

  • O servidor deve ter permissão para acessar tanto o arquivo quanto o banco de dados de destino.

  • O servidor executa a tarefa de inserção em massa . Então, qualquer arquivo de formato que a tarefa utilize deve estar localizado no servidor.

  • O arquivo de origem que a tarefa de inserção em massa carregar pode estar no mesmo servidor que o banco de dados do SQL Server no qual são inseridos os dados, ou em um servidor remoto. Se o arquivo estiver em um servidor remoto, você deve especificar o nome de arquivo usando o nome UNC no caminho.

Aperfeiçoando o desempenho

Para aperfeiçoar o desempenho, considere o seguinte:

  • Se o arquivo de texto estiver alocado no mesmo computador que a base de dados do SQL Server no qual estão inseridos os dados, a operação de cópia ocorre a uma taxa ainda mais rápida, porque os dados não são movidos pela rede.

  • A tarefa de inserção em massa não registra linhas que causam erro. Se você precisa capturar essas informações, use as saídas de erro de componentes de fluxo de dados para capturar linhas que causam erro em um arquivo de exceção.

Entradas de log personalizado disponíveis na tarefa de inserção em massa

A seguinte tabela relaciona as entradas de log personalizadas para a tarefa inserção em massa . Para obter mais informações, consulte Implementando log em pacotes e Mensagens personalizadas para log.

Entrada de log

Descrição

BulkInsertTaskBegin

Indica que a inserção em massa iniciou.

BulkInsertTaskEnd

Indica que a inserção em massa finalizou.

BulkInsertTaskInfos

Fornece informações descritivas sobre a tarefa.

Configurando a tarefa de inserção em massa

Você pode definir propriedades por meio do Designer do SSIS ou programaticamente.

Para obter mais informações sobre as propriedades que podem ser definidas no Designer do SSIS, clique em um dos seguintes tópicos:

Para obter mais informações sobre como definir essas propriedades no Designer do SSIS, clique no seguinte tópico:

Configurando a tarefa de inserção em massa programaticamente

Para obter mais informações sobre como definir programaticamente essas propriedades, clique no seguinte tópico:

Recursos externos

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos da Microsoft mais recentes, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN:

Para receber uma notificação automática dessas atualizações, assine os RSS feeds disponíveis na página.