Застосовується до
SQL Server 2012 Enterprise SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Express

Виправлення 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

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.