应用对象
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 Service Pack 1 修补程序作为一个可下载文件分发。 鉴于修补程序是累积的,每个新版本都包含所有修补程序和所有安全修补程序,这些修补程序包含在以前的 SQL Server 2012 Service Pack 1 修补程序版本中。

症状

在 SQL Server 2012 中运行 Transact-SQL 语句时,会收到以下错误消息:

“begi”附近的语法不正确。

如果满足以下条件,则会出现此问题:

  • 语句包含 IF 条件。

  • IF 条件不包含 BEGIN 和 END 语句。

  • IF 条件后跟 BEGIN TRY 块。

  • 运行查询时,将重新编译 IF 块。

解决方案

累积更新信息

SQL Server 2012 SP1 的累积更新 4

此问题的修补程序首次在累积更新 4 中发布。 有关如何获取 SQL Server 2012 SP1 的此累积更新包的详细信息,请单击以下文章编号以转到Microsoft知识库中的文章:

2833645 SQL Server 2012 SP1 的累积更新 4 注意 鉴于内部版本是累积的,每个新修补程序版本都包含所有修补程序和以前的 SQL Server 2012 SP1 修补程序版本中包含的所有安全修补程序。 建议考虑应用包含此修补程序的最新修补程序版本。 有关详细信息,请单击下面的文章编号以转到Microsoft知识库中的文章:

2772858 SQL Server 2012 Service Pack 1 发布后发布的SQL Server 2012 版本

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息

若要重现此问题,请在 SQL Server 2012 中运行以下 Transact-SQL 语句: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 TRYSELECT “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 软件更新标准术语的说明

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。