Popravci za Microsoft SQL Server 2012 Service Pack 1 distribuiraju se kao jedna datoteka za preuzimanje. S obzirom na to da su popravci kumulativni, svako novo izdanje sadrži sve hitne popravke i sve sigurnosne popravke obuhvaćene prethodnim izdanjem popravka SQL Server 2012 Service Pack 1.
Simptomi
Kada pokrenete naredbu Transact-SQL u SQL Server 2012, prikazuje se sljedeća poruka o pogrešci:
Neispravna sintaksa blizu 'begi'.
Taj se problem pojavljuje kada su ispunjeni sljedeći uvjeti:
-
Naredba sadrži uvjet IF.
-
Uvjet IF ne sadrži naredbe BEGIN i END.
-
Nakon uvjeta IF slijedi blok BEGIN TRY.
-
Blok IF ponovno se kompiliran prilikom pokretanja upita.
Rješenje
Informacije o kumulativnom ažuriranju
Kumulativno ažuriranje 4 za SQL Server 2012 SP1
Rješenje za taj problem prvi je put izdano u skupnom ažuriranju 4. Dodatne informacije o tome kako nabaviti ovaj paket kumulativnog ažuriranja za SQL Server 2012 SP1 potražite u članku iz Microsoftove baze znanja:
2833645 Kumulativno ažuriranje 4 za SQL Server 2012 SP1Note S obzirom na to da su međuverzije kumulativne, svako novo izdanje popravka sadrži sve hitne popravke i sve sigurnosne popravke koji su obuhvaćeni prethodnim izdanjem rješenja SQL Server 2012 SP1. Preporučujemo da razmislite o primjeni najnovijeg izdanja za popravak koje sadrži taj hitni popravak. Da biste pronašli dodatne informacije, kliknite sljedeći broj članka da bi vam se otvorio članak u Microsoftovoj bazi znanja:
2772858 Izdane SQL Server 2012. objavljene nakon izdavanja SQL Server 2012 Service Pack 1
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku "Odnosi se na".
Dodatne informacije
Da biste reproducirali taj problem, pokrenite sljedeće transact-SQL naredbe u programu SQL Server 2012: 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
Zaobilazno rješenje
Da biste zaobišli taj problem, dodajte naredbe BEGIN i END u uvjet IF.
Reference
Dodatne informacije o inkrementalnim servisnim modelom za SQL Server potražite u članku iz Microsoftove baze znanja:
935897 Od tima za SQL Server dostupan je inkrementalni servisni model za isporuku hitnih popravaka za prijavljene probleme Da biste saznali više o shemi imenovanja za ažuriranja sustava SQL Server, kliknite sljedeći broj članka da biste otvorili članak u Microsoftovoj bazi znanja:
822499 Shema imenovanja za pakete microsoftovih SQL Server ažuriranja Za dodatne informacije o terminologiji ažuriranja softvera kliknite sljedeći broj članka da biste otvorili članak u Microsoftovoj bazi znanja:
824684 Opis standardne terminologije koja se koristi za opisIvanje Microsoftovih softverskih ažuriranja