PROBLEMA: Erro "INSERT falhou" quando actualizar tabela de referência numa vista indexada

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: 305333
Sintomas
Quando executa um procedimento armazenado ou SQL INSERT instrução directamente, que tenta inserir uma linha numa tabela que é referenciada numa vista indexada, poderá ocorrer o seguinte erro:
INSERT falhou porque as seguintes opções SET têm definições incorrectas: 'ARITHABORT'
Além disso, este erro pode ocorrer mesmo que "SET ARITHABORT ON" é incluído no batch ou procedimento armazenado que tentativas de INSERT.
Causa
Para inserir com êxito uma linha numa tabela que é referenciada numa vista indexada, a definição de configuração ARITHABORT SQL tem de ser definida como ON. Para além disso, a instrução que se aplica esta definição de configuração tem de ser executada na sua própria secção. Dado que os procedimentos armazenados contém apenas uma secção, adicionar a instrução o procedimento não funciona.
Resolução
Para resolver este problema, adicione o código ADO seguinte para a aplicação depois de abrir a ligação à base de dados:
MyConnection.Execute "SET ARITHABORT ON"				
onde MyConnection é uma referência a objecto de ligação ADO que está a utilizar para executar o procedimento armazenado executa um INSERT ou a instrução SQL INSERT.
Ponto Da Situação
Este comportamento ocorre por predefinição.
Mais Informação
SET ARITHABORT ON é uma das opções que não é automaticamente definida para ligações que utilizam o fornecedor de OLE DB para SQL Server ou o controlador de ODBC para SQL Server. Uma vez que ligações de OLE DB e ODBC não especificar uma definição ARITHABORT, ligações predefinidas para a predefinição de servidor, que é ARITHABORT OFF.
Referências
Para mais informações, consulte os tópicos "Designing an ver de indexadas" e "Criar um índice remissivo" no SQL Server 2000 Books Online.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 305333 - Última Revisão: 05/08/2003 19:14:27 - Revisão: 2.2

Microsoft ActiveX Data Objects 2.6, Microsoft ActiveX Data Objects 2.7

  • kbmt kbprb KB305333 KbMtpt
Comentários