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

Sintomas

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

Sintaxe incorreta próxima a 'begi'.


Esse problema ocorre quando as seguintes condições forem verdadeiras:

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

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

  • A condição do IF é seguida por um bloco TRY começar .

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


Resolução

Informações da atualização cumulativa

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

A correção para esse problema foi lançado pela primeira vez na atualização cumulativa 4. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para SQL Server 2012 SP1, clique no número de artigo seguinte para ir para o artigo da Base de dados de Conhecimento da Microsoft:

2833645 cumulativa atualização 4 para o SQL Server 2012 SP1Observação: Considerando que as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server 2012 SP1 anteriores corrigir lançamento. Recomendamos que você considere aplicar o lançamento mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número de artigo seguinte para ir para o artigo da Base de Conhecimento da Microsoft:

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

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Mais informações

Para reproduzir esse 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 esse problema, adicione instruções BEGIN e END para a condição IF .

Referências

Para obter mais informações sobre o modelo de serviços incrementais para SQL Server, clique no número de artigo seguinte para ir para o artigo da Base de dados de Conhecimento da Microsoft:

935897 um modelo de serviços incrementais está disponível da equipe do SQL Server para fornecer hotfixes para problemas relatadosPara obter mais informações sobre o esquema para nomeação para atualizações do SQL Server, clique no número de artigo seguinte para ir para o artigo da Base de dados de Conhecimento da Microsoft:

Pacotes de atualização do esquema de nomeação 822499 para o software Microsoft SQL ServerPara obter mais informações sobre a terminologia de atualização de software, clique no número de artigo seguinte para ir para o artigo da Base de dados de Conhecimento da Microsoft:

824684 descrição da terminologia padrão usada para descrever as atualizações de software

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade da tradução?
O que afetou sua experiência?

Obrigado por seus comentários!

×