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 软件更新标准术语的说明