Применяется к
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 распространяются в виде одного скачиваемого файла. Учитывая, что исправления являются накопительными, каждый новый выпуск содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущий выпуск SQL Server 2012 с пакетом обновления 1 (SP1).

Проблемы

При выполнении инструкции Transact-SQL в SQL Server 2012 появляется следующее сообщение об ошибке:

Неправильный синтаксис рядом с begi.

Эта проблема возникает при выполнении следующих условий:

  • Инструкция содержит условие IF.

  • Условие IF не содержит инструкции BEGIN и END.

  • За условием IF следует блок BEGIN TRY.

  • Блок IF перекомпилируется при выполнении запроса.

Решение

Сведения о накопительном пакете обновления

Накопительный пакет обновления 4 для SQL Server 2012 с пакетом обновления 1 (SP1)

Исправление этой проблемы было впервые выпущено в накопительном пакете обновления 4. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2012 с пакетом обновления 1 (SP1), щелкните следующий номер статьи, чтобы перейти к статье в базе знаний Майкрософт:

2833645 Накопительный пакет обновления 4 для SQL Server 2012 с пакетом обновления 1 (SP1)Примечая, что сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2012 с пакетом обновления 1 (SP1). Рекомендуется применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в указанной ниже статье базы знаний Майкрософт:

2772858 Сборки SQL Server 2012 года, выпущенные после выпуска SQL Server 2012 с пакетом обновления 1 (SP1)

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Дополнительная информация

Чтобы воспроизвести эту проблему, выполните следующие инструкции Transact-SQL в SQL Server 2012: DECLARE @i INTIF object_id('tempdb.. #temptable') НЕ ЯВЛЯЕТСЯ NULLDROP TABLE #temptableCREATE TABLE #temptable (id INT)INSERT INTO #temptable ЗНАЧЕНИЯ (1),(2),(3);IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);BEGIN TRY SELECT'message'END TRYBEGIN CATCHSELECT ERROR_MESSAGE()END CATCH

Обходное решение

Чтобы обойти эту проблему, добавьте инструкции BEGIN и END в условие IF.

Ссылки

Дополнительные сведения о модели добавочного обслуживания для SQL Server щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:

935897 Модель добавочного обслуживания доступна в команде SQL Server для доставки исправлений для обнаруженных проблем. Дополнительные сведения о схеме именования для обновлений SQL Server щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:

822499 Схема именования пакетов обновлений программного обеспечения Microsoft SQL Server. Дополнительные сведения о терминологии обновлений программного обеспечения щелкните следующий номер статьи, чтобы перейти к статье в базе знаний Майкрософт:

824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.