Корекциите за Microsoft SQL Server 2012 Service Pack 1 се разпространяват като един файл за изтегляне. Като се има предвид, че корекциите са кумулативни, всяка нова версия съдържа всички горещи поправки и всички корекции на защитата, които са били включени в предишната SQL Server 2012 Service Pack 1 корекция издание.
Симптоми
Когато изпълните Transact-SQL команда в SQL Server 2012, получавате следното съобщение за грешка:
Неправилен синтаксис до "begi".
Този проблем възниква, когато са изпълнени следните условия:
-
Командата съдържа условие IF.
-
Условието IF не съдържа команди BEGIN и END.
-
Условието IF е последвано от блок BEGIN TRY.
-
Блокът IF се съставя отново, когато изпълните заявката.
Решение
Информация за кумулативна актуализация
Кумулативна актуализация 4 за SQL Server 2012 SP1
Корекцията за този проблем първо е издадена в кумулативна актуализация 4. За повече информация как да получите този сборен пакет за SQL Server 2012 SP1 щракнете върху следния номер на статия в базата знания на Microsoft:
2833645 Кумулативна актуализация 4 за SQL Server 2012 SP1Note предвид, че компилациите са кумулативни, всяка нова корекция издание съдържа всички горещи поправки и всички корекции на защитата, които са включени в предишната SQL Server 2012 SP1 корекция издание. Препоръчваме да помислите за прилагането на най-новата корекция версия, която съдържа тази актуална корекция. За повече информация щракнете върху номера на следната статия, за да отидете на статията в базата знания на Microsoft:
2772858 Компилациите на SQL Server 2012, които са издадени след издаването на SQL Server 2012 Service Pack 1
Статут
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".
Повече информация
За да възпроизведете този проблем, изпълнете следните Transact-SQL команди в 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);ЗАПОЧНЕТЕ ОПИТИЗБЕРЕТЕ "MESSAGE"END TRYBEGIN CATCHSELECT ERROR_MESSAGE()END CATCH
Заобиколно решение
За да заобиколите този проблем, добавете командите BEGIN и END към условието IF.
Препратки
За повече информация относно модела на постъпково обслужване за SQL Server щракнете върху следния номер на статия в базата знания на Microsoft:
935897 Модел на постъпково обслужване е наличен от екипа на SQL Server за предоставяне на горещи поправки за съобщени проблеми За повече информация относно схемата за именуване за SQL Server актуализации щракнете върху следния номер на статия в базата знания на Microsoft:
822499 Схема за именуване на пакети за актуализация на софтуер на Microsoft SQL Server за повече информация относно терминологията на софтуерната актуализация щракнете върху следния номер на статия в базата знания на Microsoft:
824684 Описание на стандартната терминология, която се използва за описване на актуализациите на софтуера на Microsoft