PROBLEMA: SET CONCAT_NULL_YIELDS_NULL pode causar a procedimentos para recompilação armazenados

Traduções de Artigos Traduções de Artigos
Artigo: 294942 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Novamente se um procedimento armazenado contém a instrução SET CONCAT_NULL_YIELDS_NULL e a instrução altera a definição actual de CONCAT_NULL_YIELDS_NULL, o procedimento vai ser compilado sempre que é executado. Isto pode conduzir a problemas de desempenho.

Causa

Recompilation é necessária uma vez que alterar a definição de CONCAT_NULL_YIELDS_NULL altera o resultado e a forma como os que comandos são interpretados. No SQL Server 7.0 e SQL Server 2000, CONCAT_NULL_YIELDS_NULL é definido como ON por predefinição, de acordo com normas ANSI.

Definir CONCAT_NULL_YIELDS_NULL para OFF na base de dados de nível não produzir o resultado pretendido porque o ODBC e OLE DB definido esta propriedade como activa quando se ligam. (Uma vez que este é especificado por um pouco no pacote de ligação, SQL Profiler não mostra que esta propriedade está a ser definida.)

Como contornar

Não defina CONCAT_NULL_YIELDS_NULL dentro do procedimento armazenado. A solução recomendada é utilizar a função ISNULL quando concatenação de cadeias.

Por exemplo, uma consulta deve ser escrita da seguinte forma:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'
				
em vez deste:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'
				
Embora não recomendado, uma solução alternativa seria a emitir a instrução SET CONCAT_NULL_YIELDS_NULL antes de executar o procedimento armazenado.

Mais Informação

Este artigo endereços única razão para que procedimentos armazenados podem ser novamente compiladas; para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
243586INF: Resolução de problemas Recompilation do procedimento armazenado

Propriedades

Artigo: 294942 - Última revisão: 16 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 kbprb KB294942 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: 294942

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