Service Pack 1 voor Microsoft SQL Server 2012-correcties worden gedistribueerd als één downloadbaar bestand. Gezien het feit dat de oplossingen cumulatief zijn, elke nieuwe versie bevat alle hotfixes en de beveiligingscorrecties die opgenomen in de vorige SQL Server 2012 Service Pack 1 zijn fix release.
Symptomen
Wanneer u een Transact-SQL-instructie in SQL Server 2012 uitvoert, wordt het volgende foutbericht weergegeven:
Onjuiste syntaxis bij 'begi'.
Dit probleem treedt op wanneer de volgende voorwaarden voldaan wordt:
-
De instructie bevat een als -voorwaarde.
-
De IF -voorwaarde bevat instructies voor het BEGIN en einde .
-
De IF -voorwaarde wordt gevolgd door een BEGIN TRY -blok.
-
Het blok als wordt opnieuw gecompileerd wanneer u de query uitvoert.
Oplossing
Cumulatieve update informatie
Cumulatieve Update 4 voor SQL Server 2012 SP1
De correctie voor dit probleem werd voor het eerst uitgebracht in de cumulatieve Update 4. Voor meer informatie over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2012 SP1, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
2833645 cumulatieve update 4 voor SQL Server 2012 SP1Opmerking Gezien het feit dat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en de beveiligingscorrecties die opgenomen in de vorige SQL Server 2012 SP1 zijn release opgelost. We raden het toepassen van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
2772858 met de SQL Server 2012 bouwt die zijn uitgebracht na Service Pack 1 voor SQL Server 2012 werd uitgebracht.
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.
Meer informatie
Om dit probleem, de volgende Transact-SQL-instructies worden uitgevoerd in 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
Tijdelijke oplossing
Toevoegen om dit probleem te omzeilen, BEGIN en END -instructies voor de IF -voorwaarde.
Referenties
Voor meer informatie over de incrementele Servicing-Model voor SQL Server, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
935897 een incrementele Servicing-Model is beschikbaar in de SQL Server-team voor het leveren van hotfixes voor gemelde problemenVoor meer informatie over het naamgevingsschema voor SQL Server-updates klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
822499 Naming-schema voor Microsoft SQL Server-software-updatepakkettenVoor meer informatie over terminologie voor software-update, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
824684 beschrijving van de standaardterminologie die wordt gebruikt om software-updates voor Microsoft te beschrijven