As correções do Microsoft SQL Server Service Pack 1 de 2012 são distribuídas como um arquivo para download. Dado que as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança incluídas com a versão anterior SQL Server correção do Service Pack 1 de 2012.
Sintomas
Ao executar uma instrução Transact-SQL no SQL Server 2012, você receberá a seguinte mensagem de erro:
Sintaxe incorreta perto de 'begi'.
Esse problema ocorre quando as seguintes condições são verdadeiras:
-
A instrução contém uma condição IF.
-
A condição IF não contém instruções BEGIN e END.
-
A condição IF é seguida por um bloco BEGIN TRY.
-
O bloco IF é recompilado quando você executa a consulta.
Resolução
Informações sobre a atualização cumulativa
Atualização cumulativa 4 para SQL Server 2012 SP1
A correção desse problema foi lançada pela primeira vez na Atualização Cumulativa 4. Para obter mais informações sobre como obter esse pacote de atualização cumulativo para SQL Server 2012 SP1, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:
2833645 Atualização cumulativa 4 para SQL Server 2012 SP1Note Dado que os builds são cumulativos, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança incluídas com a versão de correção anterior SQL Server 2012 SP1. Recomendamos que você considere aplicar a versão de correção mais recente que contém esse hotfix. Para obter mais informações, clique no seguinte número do artigo para acessar o artigo na Base de Dados de Conhecimento da Microsoft:
2772858 Os builds SQL Server 2012 que foram lançados após SQL Server Service Pack 1 de 2012 foram lançados
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Informações adicionais
Para reproduzir esse problema, execute as seguintes instruções Transact-SQL no SQL Server 2012: DECLARE @i INTIF object_id('tempdb.. #temptable') NÃO É UMA TABELA SUSPENSA NULA#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 esse problema, adicione instruções BEGIN e END à condição IF.
Referências
Para obter mais informações sobre o Modelo de Manutenção Incremental para SQL Server, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:
935897 Um Modelo de Manutenção Incremental está disponível na equipe do SQL Server para fornecer hotfixes para problemas relatados Para obter mais informações sobre o esquema de nomenclatura para atualizações de SQL Server, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:
822499 Esquema de nomenclatura para pacotes de atualização de software do Microsoft SQL Server Para obter mais informações sobre terminologia de atualização de software, clique no número do artigo a seguir para acessar o artigo na Base de Dados de Conhecimento da Microsoft:
824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft