KORRIGERA: "Felaktig syntax nära 'begi'" felmeddelande när du kör en Transact-SQL-uttryck i SQL Server 2012

Mall: Allmän snabbkorrigering

PROGRAMFEL #: 184706 (Innehållsunderhåll) VSTS: 1226020

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

Författare: rmaini; jannaw
Skribent: v-fismao
Teknisk granskare: rmaini; anokrut; yuronhe; umajay jannaw; sqlprev
 Editor: v-jonwoo

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×