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 區塊會被重新編譯。
解決方案
累積更新資訊
累積更新4 for SQL Server 2012 SP1
這個問題的修正最早是在累積更新 4 中釋出的。 欲了解更多如何取得 SQL Server 2012 SP1 累積更新套件的資訊,請點擊以下文章編號前往 Microsoft 知識庫中的相關文章:
2833645 SQL Server 2012 SP1 累積更新 注意:由於建置是累積式的,每個新修正釋版本都包含了先前 SQL Server 2012 SP1 修正釋出時所包含的所有熱修補與安全修補。 我們建議您考慮套用包含此熱修正的最新修正版本。 如需更多資訊,請點選下方文章編號,前往 Microsoft 知識庫查閱文章:
2772858 SQL Server 2012 版本是在 SQL Server 2012 服務包 1 發布之後釋出的
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
其他相關資訊
要重現此問題,請在 2012 SQL Server 執行以下 Transact-SQL 語句:DECLARE @i INTIF object_id ('tempdb..#temptable 的 ) 不是空的 DROP TABLE,#temptable 建立 TABLE #temptable (ID INT) 插入到 #temptable 值 (1) , (2) , (3) ;若 (年取得日期為 () ) =2012 選擇 @i= (選擇計數 (*) 從 #temptable) 中 nr 取;開始 嘗試選擇 「訊息」結束 嘗試開始 捕捉選擇 ERROR_MESSAGE () 結束 接住
因應措施
為了解決這個問題,可以在 IF 條件中加入 BEGIN 和 END 語句。
參考
欲了解更多關於 SQL Server 增量服務模型的資訊,請點擊以下文章編號前往 Microsoft 知識庫中的文章:
935897 SQL Server 團隊提供增量服務模型,以提供針對回報問題的熱修補。欲了解更多關於 SQL Server 更新命名結構的資訊,請點擊以下文章編號前往 Microsoft 知識庫中的相關文章:
822499 Microsoft SQL Server 軟體更新套件的命名結構 欲了解更多軟體更新術語,請點擊以下文章編號前往 Microsoft 知識庫中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明