Gilt für
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

Microsoft SQL Server 2012 Service Pack 1-Fixes werden als eine herunterladbare Datei verteilt. Da die Fixes kumulativ sind, enthält jedes neue Release alle Hotfixes und alle Sicherheitsfixes, die im vorherigen SQL Server 2012 Service Pack 1-Fixrelease enthalten waren.

Problembeschreibung

Wenn Sie eine Transact-SQL-Anweisung in SQL Server 2012 ausführen, erhalten Sie die folgende Fehlermeldung:

Falsche Syntax in der Nähe von 'begi'.

Dieses Problem tritt auf, wenn die folgenden Bedingungen erfüllt sind:

  • Die -Anweisung enthält eine IF-Bedingung.

  • Die IF-Bedingung enthält keine BEGIN- und END-Anweisungen.

  • Auf die If-Bedingung folgt ein BEGIN TRY-Block.

  • Der IF-Block wird neu kompiliert, wenn Sie die Abfrage ausführen.

Lösung

Informationen zum kumulativen Update

Kumulatives Update 4 für SQL Server 2012 SP1

Die Behebung dieses Problems wurde zuerst im kumulativen Update 4 veröffentlicht. Weitere Informationen zum Abrufen dieses kumulativen Updatepakets für SQL Server 2012 SP1 finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:

2833645 Kumulatives Update 4 für SQL Server 2012 SP1Note Da die Builds kumulativ sind, enthält jedes neue Fixrelease alle Hotfixes und alle Sicherheitsfixes, die im vorherigen SQL Server 2012 SP1-Fixrelease enthalten waren. Es wird empfohlen, dass Sie das neueste Updaterelease anwenden, das diesen Hotfix enthält. Weitere Informationen finden Sie, indem Sie auf die folgende Artikelnummer klicken, um zum Artikel in der Microsoft Knowledge Base zu wechseln:

2772858 Die SQL Server 2012-Builds, die nach SQL Server 2012 Service Pack 1 veröffentlicht wurden

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Um dieses Problem zu reproduzieren, führen Sie die folgenden Transact-SQL-Anweisungen in SQL Server 2012 aus: 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

Problemumgehung 

Um dieses Problem zu umgehen, fügen Sie begin- und END-Anweisungen zur IF-Bedingung hinzu.

Informationsquellen

Weitere Informationen zum inkrementellen Wartungsmodell für SQL Server finden Sie im folgenden Artikel der Microsoft Knowledge Base:

935897 Ein inkrementelles Wartungsmodell ist vom SQL Server-Team verfügbar, um Hotfixes für gemeldete Probleme bereitzustellen. Weitere Informationen zum Benennungsschema für SQL Server Updates finden Sie in der Microsoft Knowledge Base:

822499 Benennungsschema für Microsoft SQL Server Softwareupdatepakete Weitere Informationen zur Terminologie von Softwareupdates finden Sie in der Microsoft Knowledge Base im folgenden Artikel:

824684 Erläuterung von Standardbegriffen bei Microsoft-Softwareupdates

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.