CORRECÇÃO: Falha da etapa de trabalho se primeiro INSERT do trabalho em lotes encontra um erro mensagem 3604

Traduções deste artigo Traduções deste artigo
ID do artigo: 295032 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 351328 (SHILOH_BUGS)
BUG #: 100729 (SQLBUG_70)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Se um trabalho contém uma única instrução INSERT em uma tabela que tem um índice exclusivo com a cláusula IGNORE_DUP_KEY e o INSERT viola a propriedade de exclusividade do índice, a linha correspondente não é inserida na tabela. A etapa de trabalho falha e você vir a seguinte mensagem no histórico de etapa do trabalho:
Chave duplicada foi ignorada. [SQLSTATE 23000] (Mensagem 3604). A etapa falhou.
Como a tabela tem um índice com IGNORE_DUP_KEY UNIQUE, a instrução INSERT deve ser ignorada e a etapa deve sucesso.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211INF: Como obter o Service Pack mais recente do SQL Server 2000

Como Contornar

Se você colocar uma instrução SELECT "fictícia" que sempre executa com êxito (como SELECT 1) apenas antes da instrução INSERT que falha com o erro 3604, a etapa terá êxito. Isso é demonstrado na seção "Mais informações".

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 1.

Mais Informações

Passos para reproduzir o problema

  1. Criar um tabela de teste de mensagens no banco de dados pubs e executar o script a seguir para inserir uma linha:
    USE pubs
    CREATE TABLE test(i int)
    CREATE UNIQUE INDEX uniq_t1_i on test(i) with IGNORE_DUP_KEY
    INSERT INTO test VALUES(1)
    					
  2. Criar um trabalho de T-SQL no banco de dados pubs para inserir uma linha na tabela de teste :
    INSERT INTO pubs..test values(1)
    					
  3. Execute o trabalho. O trabalho falhar e o histórico de etapa do trabalho mostra o erro listado na seção "Sintomas".
  4. Observe que, se adicionar uma declaração bem-sucedida após o INSERT que encontra um erro 3604:
    INSERT INTO pubs..test values(1)
    INSERT INTO pubs..test values(2)
    					
    a etapa falha novamente com o seguinte erro:
    Chave duplicada foi ignorada. [SQLSTATE 23000] (Mensagem 3604) Instrução associada não está preparada [SQLSTATE HY007] (erro 0). A etapa falhou.
  5. No entanto, se adicionar uma declaração bem-sucedida que tem resultados antes INSERT que falha com erro 3604:
    insert pubs..t1 values(3)
    insert pubs..t1 values(1)
    					
    a etapa for bem-sucedida e, consulte a seguinte mensagem:
    Chave duplicada foi ignorada. [SQLSTATE 23000] (Mensagem 3604). A etapa bem-sucedida.

Propriedades

ID do artigo: 295032 - Última revisão: terça-feira, 28 de outubro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295032 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 295032

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com