Correctifs du Service Pack 1 de Microsoft SQL Server 2012 sont distribuées sous la forme d’un fichier téléchargeable unique. Étant donné que les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente SQL Server 2012 Service Pack 1 version du correctif.
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-elle pas d’instructions BEGIN et END .
-
La condition IF est suivie par un bloc TRY de commencer .
-
Le bloc IF est recompilé lorsque vous exécutez la requête.
Résolution
Informations de mise à jour cumulative
Mises à jour cumulatives 4 pour SQL Server 2012 SP1
Le correctif de ce problème a été publié dans les 4 mise à jour Cumulative. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2012 SP1, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2833645 Cumulative mise à jour 4 pour SQL Server 2012 SP1Remarque Étant donné que les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans le précédent Service Pack 1 de SQL Server 2012 version du correctif. Nous vous recommandons l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2772858 2012 de SQL Server les builds qui ont été publiées après la publication du Service Pack 1 de SQL Server 2012
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Plus d'informations
Pour reproduire ce problème, exécutez les instructions Transact-SQL suivantes dans 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 CATCHSolution de contournement
Pour contourner ce problème, ajoutez les instructions BEGIN et END pour la condition IF .
Références
Pour plus d’informations sur le modèle de service incrémentiel pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
935897 un modèle de service incrémentiel est disponible auprès de l’équipe SQL Server pour proposer des correctifs pour les problèmes signalésPour plus d’informations sur le schéma d’appellation des mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
Packages de mises à jour de schéma de nommage 822499 pour les logiciels de Microsoft SQL ServerPour plus d’informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft