Applies ToSQL Server 2012 Enterprise SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Express

Correcções do Microsoft SQL Server 2012 Service Pack 1 são distribuídas como um ficheiro para transferência. Dado que as correcções são cumulativas, cada nova versão inclui todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o anterior SQL Server 2012 Service Pack 1.

Sintomas

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

Sintaxe incorrecta perto de 'begi'.

Este problema ocorre quando se verificam as seguintes condições:

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

  • A condição de se não contém instruções de início e fim .

  • A condição de se é seguida por um bloco de Começar a TENTAR .

  • O bloco se é recompilado quando executa a consulta.

Resolução

Informações de actualização cumulativa

Actualização cumulativa 4 para o SQL Server 2012 SP1

A correcção para este problema foi primeiro disponibilizada em 4 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2012 SP1, clique no número de artigo seguinte para ir para o artigo na Microsoft Knowledge Base:

2833645 cumulativo atualização 4 para o SQL Server SP1 de 2012Nota Dado que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2012 SP1 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para ir para o artigo na Microsoft Knowledge Base:

2772858 o SQL Server 2012 cria disponibilizadas após o lançamento do SQL Server 2012 Service Pack 1

Estado

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

Mais informações

Para reproduzir este problema, execute as seguintes instruções de 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);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 este problema, adicione instruções de início e fim para a condição de se .

Referências

Para mais informações sobre o modelo de Assistência Incremental para o SQL Server, clique no número de artigo seguinte para ir para o artigo na Microsoft Knowledge Base:

935897 um modelo de Assistência Incremental está disponível a partir da equipa do SQL Server para proporcionar correcções para problemas comunicadosPara mais informações sobre o esquema de atribuição para actualizações do SQL Server, clique no número de artigo seguinte para ir para o artigo na Microsoft Knowledge Base:

Pacotes de actualização do esquema de atribuição de nomes de 822499 para software Microsoft SQL ServerPara mais informações sobre a terminologia de actualização de software, clique no número de artigo seguinte para ir para o artigo na Microsoft Knowledge Base:

824684 descrição da terminologia padrão utilizada para descrever actualizaçõ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.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.