Opravy microsoft SQL Server 2012 Service Pack 1 se distribuují jako jeden soubor ke stažení. Vzhledem k tomu, že opravy jsou kumulativní, obsahuje každá nová verze všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze SQL Server 2012 Service Pack 1.
Příznaky
Při spuštění příkazu Jazyka Transact-SQL v SQL Server 2012 se zobrazí následující chybová zpráva:
Nesprávná syntaxe v blízkosti "begi".
K tomuto problému dochází při splnění následujících podmínek:
-
Příkaz obsahuje podmínku KDYŽ.
-
Podmínka KDYŽ neobsahuje příkazy BEGIN a END.
-
Za podmínkou IF následuje blok BEGIN TRY.
-
Při spuštění dotazu se znovu zkompiluje blok IF.
Řešení
Informace o kumulativní aktualizaci
Kumulativní aktualizace 4 pro SQL Server 2012 SP1
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 4. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2012 SP1 naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
2833645 Kumulativní aktualizace 4 pro SQL Server 2012 SP1Note Vzhledem k tomu, že sestavení jsou kumulativní, obsahuje každá nová verze oprav všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze SQL Server 2012 SP1. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
2772858 Buildy SQL Server 2012 vydané po vydání aktualizace Service Pack 1 SQL Server 2012
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace
Pokud chcete tento problém reprodukovat, spusťte v SQL Server 2012 následující příkazy jazyka Transact-SQL: DECLARE @i INTIF object_id('tempdb.. #temptable') NENÍ 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
Řešení
Chcete-li tento problém vyřešit, přidejte do podmínky IF příkazy BEGIN a END.
Odkazy
Další informace o modelu přírůstkové údržby pro SQL Server naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
935897 Model přírůstkové údržby je k dispozici od SQL Server týmu pro doručování oprav hotfix pro nahlášené problémy Další informace o schématu pojmenování pro SQL Server aktualizace klepněte na následující číslo článku přejděte na článek znalostní báze Microsoft Knowledge Base:
822499 Schéma pojmenování balíčků aktualizací softwaru microsoft SQL Server Další informace o terminologii aktualizací softwaru získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft