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 2012 Service Pack 1 são distribuídas como um ficheiro transferível. Tendo em conta que as correções são cumulativas, cada nova versão contém todas as correções e todas as correções de segurança incluídas na versão de correção do SQL Server 2012 Service Pack 1 anterior.

Sintomas

Quando executa uma instrução Transact-SQL no SQL Server 2012, recebe a seguinte mensagem de erro:

Sintaxe incorreta perto de "begi".

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

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

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

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

  • O bloco SE é recompilado quando executa a consulta.

Resolução

Informações de atualização cumulativa

Atualização Cumulativa 4 para SQL Server 2012 SP1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 4. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2012 SP1, clique no seguinte número de artigo para aceder ao artigo na Base de Dados de Conhecimento Microsoft:

2833645 Atualização cumulativa 4 para SQL Server 2012 SP1Note Dado que as compilações são cumulativas, cada nova versão de correção contém todas as correções e todas as correções de segurança que foram incluídas na versão de correção do SQL Server 2012 SP1 anterior. Recomendamos que considere aplicar a versão de correção mais recente que contém esta correção. Para obter mais informações, clique no seguinte número do artigo para aceder ao artigo na Base de Dados de Conhecimento Microsoft:

2772858 As compilações SQL Server 2012 que foram lançadas após SQL Server service pack 1 de 2012 foram lançadas

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informações

Para reproduzir este problema, execute as seguintes instruções Transact-SQL no SQL Server 2012: DECLARE @i INTIF object_id('tempdb.). #temptable') IS NOT NULLDROP TABLE #temptableCREATE TABLE #temptable (ID INT)INSERT INTO #temptable VALUES (1),(2),(3);SE year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);BEGIN TRYSELECT 'message'END TRYBEGIN CATCHSELECT ERROR_MESSAGE()END CATCH

Solução

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

Referências

Para obter mais informações sobre o Modelo de Manutenção Incremental para SQL Server, clique no seguinte número de artigo para aceder ao artigo na Base de Dados de Conhecimento Microsoft:

935897 Está disponível um Modelo de Manutenção Incremental da equipa de SQL Server para fornecer correções para problemas reportados Para obter mais informações sobre o esquema de nomenclatura para atualizações de SQL Server, clique no seguinte número de artigo para aceder ao artigo na Base de Dados de Conhecimento Microsoft:

822499 Esquema de nomenclatura 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 seguinte número de artigo para aceder ao artigo na Base de Dados de Conhecimento 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 subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.