Виправлення Microsoft SQL Server 2012 із пакетом оновлень 1 (SP1) розповсюджуються як один файл, який можна завантажити. Враховуючи, що сукупні виправлення, кожен новий випуск містить усі виправлення та всі виправлення системи безпеки, які входили в попередній випуск виправлення SQL Server 2012 із пакетом оновлень 1.
Ознаки
Коли ви запускаєте оператор Transact-SQL у SQL Server 2012, з'являється таке повідомлення про помилку:
Неправильний синтаксис поблизу "begi".
Ця проблема виникає, якщо виконуються такі умови:
-
Інструкція містить умову IF.
-
Умова IF не містить операторів BEGIN і END.
-
Після умови IF використовується блок BEGIN TRY.
-
Блок IF повторно компілюються під час виконання запиту.
Спосіб вирішення
Сукупні відомості про оновлення
Сукупний пакет оновлень 4 для SQL Server 2012 з пакетом оновлень 1 (SP1)
Виправлення цієї проблеми вперше випущено в сукупному пакеті оновлень 4. Щоб отримати додаткові відомості про те, як отримати цей пакет сукупний пакет оновлень для SQL Server 2012 sp1 клацніть номер статті в базі знань Microsoft Knowledge Base:
2833645 Сукупне оновлення 4 для SQL Server 2012 із пакетом оновлень 1 (SP1) З огляду на те, що збірки сукупні, кожен новий випуск виправлення містить усі виправлення для системи безпеки, які входили в попередній випуск виправлення SQL Server 2012 sp1. Радимо застосувати останній випуск виправлення, який містить це виправлення. Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft Knowledge Base:
2772858 Збірки SQL Server 2012, випущені після випуску пакета оновлень 1 SQL Server 2012
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах 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);BEGIN TRYSELECT 'message'END TRY BEGINCATCHSELECT ERROR_MESSAGE()END CATCH
Інші способи вирішення
Щоб вирішити цю проблему, додайте оператори BEGIN і END до умови IF.
Посилання
Щоб отримати додаткові відомості про модель інкрементного обслуговування для SQL Server клацніть номер статті в базі знань Microsoft Knowledge Base:
935897 Інкрементна модель обслуговування доступна в команді SQL Server, щоб доставити виправлення для повідомлених проблем. Щоб отримати додаткові відомості про схему іменування для оновлень SQL Server, клацніть номер статті в базі знань Microsoft Knowledge Base:
822499 Схема іменування для пакетів оновлення програмного забезпечення Microsoft SQL Server. Щоб отримати додаткові відомості про термінологію оновлення програмного забезпечення, клацніть номер статті в базі знань Microsoft Knowledge Base:
824684 Опис стандартної термінології, яка використовується для опису оновлень програмного забезпечення Microsoft