Korrigeringar för Microsoft SQL Server 2012 Service Pack 1 distribueras som en nedladdningsbar fil. Med tanke på att korrigeringar är kumulativa innehåller varje ny utgåva innehåller alla snabbkorrigeringar och säkerhetskorrigering för alla säkerhetskorrigeringar som ingår med föregående SQL Server 2012 Service Pack 1.
Symptom
När du kör en Transact-SQL-uttryck i SQL Server 2012, visas följande felmeddelande:
Felaktig syntax nära 'begi'.
Det här problemet uppstår när följande villkor är uppfyllda:
-
Uttrycket innehåller en IF -villkor.
-
Om villkoret innehåller inte Start - och slut -satser.
-
Om villkoret följs av ett Försök att BÖRJA block.
-
Om block är recompiled när du kör frågan.
Lösning
Information om Kumulativ uppdatering
Kumulativ uppdatering 4 för SQL Server 2012 SP1
Korrigeringsfil för problemet gavs först ut i kumulativ uppdatering 4. Mer information om hur du skaffar den kumulativa uppdateringspaket för SQL Server 2012 SP1 klickar du på följande artikelnummer för att gå till artikeln i Microsoft Knowledge Base:
2833645 kumulativ uppdatering 4 för SQL Server 2012 SP1Obs! Med tanke på att de build-versioner är kumulativa innehåller varje ny version av korrigeringsfilen innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingår i föregående SQL Server 2012 SP1 fix release. Vi rekommenderar att du använder den senaste utgåvan av korrigering som innehåller den här snabbkorrigeringen. Mer information klickar du på följande artikelnummer för att gå till artikeln i Microsoft Knowledge Base:
2772858 i SQL Server 2012 bygger som har getts ut efter SQL Server 2012 Service Pack 1
Status
Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".
Mer Information
Om du vill återskapa det här problemet kör du följande Transact-SQL-uttryck i 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
Temporär lösning
Undvik problemet genom att lägga till BEGIN och END -satser IF -villkor.
Referenser
Mer information om stegvis Servicing modellen för SQL Server klickar du på följande artikelnummer för att gå till artikeln i Microsoft Knowledge Base:
935897 en inkrementell Servicing modell är tillgänglig från SQL Server-teamet att leverera snabbkorrigeringar för rapporterade problemMer information om namngivning schemat för uppdateringar för SQL Server klickar du på följande artikelnummer för att gå till artikeln i Microsoft Knowledge Base:
822499 Naming schema för programvara för Microsoft SQL Server-programuppdateringspaketMer information om terminologin för programuppdateringar klickar du på följande artikelnummer för att gå till artikeln i Microsoft Knowledge Base:
824684 beskrivning av standardterminologin som används för att beskriva Microsoft-programuppdateringar