Aplica-se a
SQL Server 2012 Enterprise SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Express

As correções do Microsoft SQL Server Service Pack 1 de 2012 são distribuídas como um arquivo para download. Dado que as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança incluídas com a versão anterior SQL Server correção do Service Pack 1 de 2012.

Sintomas

Ao executar uma instrução Transact-SQL no SQL Server 2012, você receberá a seguinte mensagem de erro:

Sintaxe incorreta perto de 'begi'.

Esse problema ocorre quando as seguintes condições são verdadeiras:

  • A instrução contém uma condição IF.

  • A condição IF não contém instruções BEGIN e END.

  • A condição IF é seguida por um bloco BEGIN TRY.

  • O bloco IF é recompilado quando você executa a consulta.

Resolução

Informações sobre a atualização cumulativa

Atualização cumulativa 4 para SQL Server 2012 SP1

A correção desse problema foi lançada pela primeira vez na Atualização Cumulativa 4. Para obter mais informações sobre como obter esse pacote de atualização cumulativo para SQL Server 2012 SP1, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:

2833645 Atualização cumulativa 4 para SQL Server 2012 SP1Note Dado que os builds são cumulativos, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança incluídas com a versão de correção anterior SQL Server 2012 SP1. Recomendamos que você considere aplicar a versão de correção mais recente que contém esse hotfix. Para obter mais informações, clique no seguinte número do artigo para acessar o artigo na Base de Dados de Conhecimento da Microsoft:

2772858 Os builds SQL Server 2012 que foram lançados após SQL Server Service Pack 1 de 2012 foram lançados

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Informações adicionais

Para reproduzir esse problema, execute as seguintes instruções Transact-SQL no SQL Server 2012: DECLARE @i INTIF object_id('tempdb.. #temptable') NÃO É UMA TABELA SUSPENSA NULA#TEMPTABLECREATE TABLE #temptable (id INT)INSERT INTO #TEMPTABLE VALUES (1),(2)(3);IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);BEGIN TRYSELECT 'message'END TRYBEGIN CATCHSELECT ERROR_MESSAGE()END CATCH

Solução alternativa

Para contornar esse problema, adicione instruções BEGIN e END à condição IF.

Referências

Para obter mais informações sobre o Modelo de Manutenção Incremental para SQL Server, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:

935897 Um Modelo de Manutenção Incremental está disponível na equipe do SQL Server para fornecer hotfixes para problemas relatados Para obter mais informações sobre o esquema de nomenclatura para atualizações de SQL Server, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:

822499 Esquema de nomenclatura para pacotes de atualização de software do Microsoft SQL Server Para obter mais informações sobre terminologia de atualização de software, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.