Пакет обновления 1 для Microsoft SQL Server 2012 распространяются как один загружаемый файл. Учитывая, что исправления являются накопительными, каждый выпуск содержит все исправления и все исправления безопасности, которые были включены в Пакет обновления 1 для предыдущего SQL Server 2012 выпуска исправлений.
Симптомы
При выполнении инструкции Transact-SQL в SQL Server 2012, появляется следующее сообщение об ошибке:
Неправильный синтаксис около «begi».
Эта проблема возникает при выполнении следующих условий:
-
Инструкция содержит условие IF .
-
Условие IF не содержит инструкции BEGIN и END .
-
Условие IF следует блок BEGIN TRY .
-
Если блок перекомпилируется при выполнении запроса.
Решение
Информация о накопительном пакете обновления
Накопительное обновление 4 для SQL Server 2012 с пакетом обновления 1
Исправление, устраняющее эту проблему, сначала было выпущено в накопительное обновление 4. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2012 с пакетом обновления 1 щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:
2833645 накопительного обновления 4 для SQL Server 2012 с пакетом обновления 1Примечание. Учитывая, что построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2012 с пакетом обновления 1 выпуска исправлений. Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:
2772858 SQL Server 2012 выполняется построение, выпущенных после выпуска SQL Server 2012 Пакет обновления 1
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".
Дополнительные сведения
Чтобы воспроизвести данную проблему, выполните следующие инструкции Transact-SQL в SQL Server 2012:
DECLARE @i INT
IF object_id('tempdb..#temptable') IS NOT NULL
DROP TABLE #temptable
CREATE TABLE #temptable (id INT)
INSERT INTO #temptable VALUES (1),(2),(3);
IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);
BEGIN TRY
SELECT 'message'
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE()
END CATCH
Временное решение
Чтобы обойти эту проблему, добавьте инструкции BEGIN и END IF условие.
Ссылки
Дополнительные сведения о добавочных модель обслуживания для SQL Server щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:
935897 добавочных модель обслуживания доступна из группы SQL Server для предоставления исправления для проблем, о которых сообщалось вДополнительные сведения о схеме именования для обновления SQL Server щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:
Пакеты обновлений схемы именования 822499 для программного обеспечения Microsoft SQL ServerДополнительные сведения о терминологии обновления программного обеспечения щелкните следующий номер статьи, чтобы перейти к статье базы знаний Майкрософт:
Описание 824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт