CORREÇÃO: Quando você executa um script Transact-SQL em uma etapa de um trabalho do SQL Server Agent no SQL Server 2005 ou no SQL Server 2008, o resultado do script Transact-SQL pode ser truncado

Traduções de Artigos Traduções de Artigos
Artigo: 955695 - Ver produtos para os quais este artigo se aplica.
Importante Este artigo contém informações sobre como modificar o registro. Certifique-se de fazer backup do registro antes de modificá-lo. Certifique-se de que você sabe como restaurá-lo caso ocorra algum problema. Para obter mais informações sobre como fazer backup, restaurar e modificar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756 Como fazer backup e restaurar o registro no Windows
A Microsoft distribui correções do Microsoft SQL Server 2005 como um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e correções de segurança que foram incluídas com o SQL Server 2005 anteriores corrigir o lançamento.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Considere o seguinte cenário.
  • No Microsoft SQL Server 2005 ou SQL Server 2008, você executar um script Transact-SQL em uma etapa em um trabalho do SQL Server Agent.
  • Na etapa, a primeira instrução retorna uma mensagem de erro.
  • As instruções de posteriores também retornam uma ou mais mensagens de erro.
Nesse cenário, quando você executa o trabalho do SQL Server Agent, você pode encontrar que posteriores não processadas e que a etapa incorretamente retorna o estado de sucesso. Os resultados das afirmações posteriores são truncados.

Causa

Agente do SQL Server 2005 usa o driver do SQL Native Client (sqlncli. dll) para se conectar à instância do SQL Server 2005. Agente do SQL Server 2000 usa o driver ODBC para SQL Server (Sqlsrv32. dll) para se conectar ao Microsoft SQL Server 2000. Uma alteração no token de erro fluxo (TDS) tabular data retornado do SQL Server para SQL Server Agent resultados em uma diferença no comportamento entre os dois drivers. Isso faz a diferença de comportamento entre as duas versões do SQL Server Agent.

Resolução

SQL Server 2005

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 9. Para obter mais informações sobre como obter esse pacote cumulativo de atualização para o SQL Server 2005 Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
953752 Pacote de atualização cumulativa 9 para o SQL Server 2005 Service Pack 2.
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e correções de segurança que foram incluídas com o SQL Server 2005 anteriores corrigir o lançamento. A Microsoft recomenda que você considere a aplicação a versão mais recente da correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
937137 O SQL Server 2005 cria lançados após o lançamento do SQL Server 2005 Service Pack 2.
Os hotfixes do Microsoft SQL Server 2005 são criados para service packs do SQL Server específicos. Você deve aplicar um hotfix do SQL Server 2005 Service Pack 2 para uma instalação do SQL Server 2005 Service Pack 2. Por padrão, todos os hotfixes são fornecidos em um service pack do SQL Server está incluído no próximo service pack do SQL Server.

SQL Server 2008

A correção deste problema é incorporada a versiom a RTM do SQL Server 2008. No entanto, para habilitar o hotfix, ainda pode ter faça as alterações de registro são descritas na seção "Mais informações".

Como contornar

Para contornar esse problema, adicione uma instrução SELECT fictícia como a primeira instrução na etapa.

Ponto Da Situação

A Microsoft confirmou que se trata de um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informação

Aviso Problemas sérios podem ocorrer se você modificar o registro incorretamente usando o Editor do registro ou usando outro método. Esses problemas podem exigir a reinstalação do sistema operacional. A Microsoft não garante que esses problemas podem ser resolvidos. Modificar o registro de sua responsabilidade.
Para habilitar esse hotfix, você deve criar a seguinte entrada do registro e definir essa entrada do registro para 0:
Servidor \ do HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL<mssql.x>\SQLServerAgent\TruncateJobResultOnError<b00></b00></mssql.x>

Observação Na entrada de registro, <mssql.x></mssql.x>representa a identificação da instância do SQL Server. Você deve alterá-lo para o valor correto para sua instância.

Se você quiser desativar esse hotfix, defina a entrada de registro TruncateJobResultOnError como 1.

Passos para reproduzir este problema.

  1. Crie um procedimento armazenado estendido. Por exemplo, crie o procedimento armazenado denominado xp_hello estendido de exemplo.
  2. Criar um trabalho do SQL Server Agent e, em seguida, adicione as seguintes instruções em uma etapa do trabalho do SQL Server Agent:
    declare @txt int
    exec xp_hello @txt OUTPUT
    RAISERROR('One or more operations failed to complete.', 16, 1)
    
  3. Execute o trabalho do SQL Server Agent.
Quando o xp_hello extended procedimento armazenado retorna um erro de nível de gravidade 1 e a entrada de registro TruncateJobResultOnError estiver definida como 0, a etapa de trabalho está sinalizada como falha. Os resultados da xp_hello extended procedimento armazenado e a instrução RAISERROR são capturados no histórico do trabalho. Ao analisar o histórico do trabalho, você encontrar o nível de gravidade das etapas é 16.

Quando o xp_hello extended procedimento armazenado retorna um erro de nível de gravidade 1 e a entrada de registro TruncateJobResultOnError estiver definida como 1, a etapa de trabalho é sinalizada como um sucesso. Apenas o resultado do procedimento armazenado estendido de xp_hello é capturado no histórico do trabalho. O resultado da instrução RAISERROR será truncado. Ao analisar o histórico do trabalho, você encontrar o nível de gravidade das etapas é 1.

Quando o xp_hello extended procedimento armazenado retorna um erro de nível de gravidade 11 e a entrada de registro TruncateJobResultOnError estiver definida como 0, a etapa de trabalho está sinalizada como falha. Os resultados do xp_hello o procedimento armazenado estendido e a instrução RAISERROR são capturadas no histórico do trabalho. Ao analisar o histórico do trabalho, você encontrar o nível de gravidade das etapas é 16.

Quando o xp_hello extended procedimento armazenado retorna um erro de nível de gravidade 11 e a entrada de registro TruncateJobResultOnError estiver definida como 1, a etapa de trabalho está sinalizada como falha. Apenas o resultado do procedimento armazenado estendido de xp_hello é capturado no histórico do trabalho. O resultado da instrução RAISERROR será truncado. Ao analisar o histórico do trabalho, você encontrar o nível de gravidade das etapas é 11.

Para obter mais informações sobre a diferença no nível de gravidade das mensagens de erro, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
309802CORREÇÃO: Uma chamada para uma declaração RAISERROR em um lote de Transact-SQL pode causar um trabalho SQLAgent falhar e perder a saída no SQL Server
903086 CORREÇÃO: O trabalho em lotes interrompe a execução e a saída do trabalho será truncada quando você executa um script Transact-SQL como um trabalho do SQL Server Agent no SQL Server 2000
Para obter mais informações sobre quais arquivos são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de atualização cumulativa que contém o hotfix descrito neste artigo da Base de dados de Conhecimento da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
953752 Pacote de atualização cumulativa 9 para o SQL Server 2005 Service Pack 2.

Referências

Para obter mais informações sobre a lista de compilações disponibilizadas após o SQL Server Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
937137 O SQL Server 2005 cria lançados após o lançamento do SQL Server 2005 Service Pack 2.
Para obter mais informações sobre o modelo de serviços incrementais para SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
935897 Um modelo de serviços incrementais está disponível da equipe do SQL Server para fornecer hotfixes para problemas relatados
Para obter mais informações sobre como obter o SQL Server 2005 Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
913089 Como obter o service pack mais recente para o SQL Server 2005.
Para obter mais informações sobre os novos recursos e melhorias no SQL Server 2005 Service Pack 2, visite o seguinte site da Microsoft:
http://go.microsoft.com/fwlink/?LinkId = 71711
Para obter mais informações sobre o esquema de nomeação para atualizações do SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822499 Novo esquema de nomeação para pacotes de atualização de software do Microsoft SQL Server.
Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684 Descrição da terminologia padrão usada para descrever as atualizações de software da Microsoft

Propriedades

Artigo: 955695 - Última revisão: 16 de junho de 2011 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
Palavras-chave: 
kbsql2005tool kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbmt KB955695 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: 955695

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