CORRECÇÃO: Tarefa passo falha se primeiro INSERT de processo encontrar um erro de erro 3604

Traduções de Artigos Traduções de Artigos
Artigo: 295032 - Ver produtos para os quais este artigo se aplica.
N.º DE BUGS: 351328 (SHILOH_BUGS)
N.º DE BUGS: 100729 (SQLBUG_70)
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Se uma tarefa contém uma única instrução INSERT numa tabela que tenha um índice exclusivo com a cláusula IGNORE_DUP_KEY e o INSERT viola a propriedade de exclusividade do índice, não se encontra na linha correspondente na tabela. O passo de tarefa falha e verá a seguinte mensagem no histórico de passo de tarefa:
Chave duplicada foi ignorada. [SQLSTATE 23000] (Mensagem 3604). O passo falhou.
Uma vez que a tabela tem um índice com IGNORE_DUP_KEY UNIQUE, a instrução INSERT deve ser ignorada e o passo deve teve êxito.

Resolução

Para resolver este problema, obtenha o service pack mais recente do SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211INF: How to Obtain the Latest SQL Server 2000 Service Pack

Como contornar

Se colocar uma instrução SELECT "fictícia" que é sempre executado com êxito (tal como SELECT 1) apenas antes a instrução INSERT que falhou com o erro 3604, o passo sucede. Isso é demonstrado na secção "Mais informação".

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo. Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.

Mais Informação

Passos para reproduzir o comportamento

  1. Criar uma tabela de teste na base de dados pubs e execute o seguinte script 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 uma tarefa T-SQL na base de dados pubs para inserir uma linha na tabela de teste :
    INSERT INTO pubs..test values(1)
    					
  3. Execute a tarefa. A tarefa falhar e o histórico de passo de projecto mostra o erro listado na secção "Sintomas".
  4. Nota que, se adicionar uma instrução com êxito depois do INSERT que encontrar um erro 3604:
    INSERT INTO pubs..test values(1)
    INSERT INTO pubs..test values(2)
    					
    o passo 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). O passo falhou.
  5. No entanto, se adicionar uma instrução com êxito com resultados antes do INSERT falha com o erro 3604:
    insert pubs..t1 values(3)
    insert pubs..t1 values(1)
    					
    o passo tiver êxito e ver é a seguinte mensagem:
    Chave duplicada foi ignorada. [SQLSTATE 23000] (Mensagem 3604). O passo com êxito.

Propriedades

Artigo: 295032 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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