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 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?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?

Obrigado pelo seu feedback!

×