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