S’applique à
SQL Server 2012 Enterprise SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Express

Les correctifs microsoft SQL Server Service Pack 1 2012 sont distribués sous la forme d’un fichier téléchargeable. Étant donné que les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server Service Pack 1 2012.

Symptômes

Lorsque vous exécutez une instruction Transact-SQL dans SQL Server 2012, le message d’erreur suivant s’affiche :

Syntaxe incorrecte près de « begi ».

Ce problème se produit lorsque les conditions suivantes sont remplies :

  • L’instruction contient une condition IF.

  • La condition IF ne contient pas d’instructions BEGIN et END.

  • La condition IF est suivie d’un bloc BEGIN TRY.

  • Le bloc SI est recompilé lorsque vous exécutez la requête.

Solution

Informations sur les mises à jour cumulatives

Mise à jour cumulative 4 pour SQL Server 2012 SP1

Le correctif pour ce problème a été publié pour la première fois dans la mise à jour cumulative 4. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2012 SP1, cliquez sur le numéro d’article suivant pour accéder à l’article de la Base de connaissances Microsoft :

2833645 Mise à jour cumulative 4 pour SQL Server 2012 SP1Note Étant donné que les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2012 SP1. Nous vous recommandons d’appliquer la version la plus récente du correctif qui contient ce correctif. Pour plus d’informations, cliquez sur le numéro ci-dessous pour accéder à l’article correspondant dans la Base de connaissances Microsoft :

2772858 Les builds SQL Server 2012 qui ont été publiées après SQL Server 2012 Service Pack 1 a été publié

État

Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Informations supplémentaires

Pour reproduire ce problème, exécutez les instructions Transact-SQL suivantes dans 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 CATCH

Solution de contournement 

Pour contourner ce problème, ajoutez les instructions BEGIN et END à la condition IF.

Références

Pour plus d’informations sur le modèle de maintenance incrémentielle pour SQL Server, cliquez sur le numéro ci-dessous pour accéder à l’article de la Base de connaissances Microsoft :

935897 Un modèle de maintenance incrémentielle est disponible auprès de l’équipe SQL Server pour fournir des correctifs logiciels pour les problèmes signalés. Pour plus d’informations sur le schéma de nommage des mises à jour SQL Server, cliquez sur le numéro d’article suivant pour accéder à l’article dans la Base de connaissances Microsoft :

822499 Schéma d’affectation de noms pour microsoft SQL Server packages de mise à jour logicielle Pour plus d’informations sur la terminologie des mises à jour logicielles, cliquez sur le numéro d’article suivant pour accéder à l’article de la Base de connaissances Microsoft :

824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.