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 INT IF object_id('tempdb..#temptable') IS NOT NULL DROP TABLE #temptable CREATE TABLE #temptable (id INT) INSERT INTO #temptable VALUES (1),(2),(3); IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable); BEGIN TRY SELECT 'message' END TRY BEGIN CATCH SELECT ERROR_MESSAGE() END CATCHSoluçã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