Microsoft SQL Server 2012 Service Pack 1 修正程式分散成一個可下載的檔案。假設的修正程式是累積的每個新版本包含的所有 hotfix,並隨附於前一筆 SQL Server 2012 Service Pack 1 所有安全性修正程式會都修正版本。
狀況
當您執行 SQL Server 2012年考慮改用 SQL 陳述式時,您會收到下列錯誤訊息︰
'Begi' 附近的語法不正確。
當下列情況成立時,就會發生這個問題︰
-
陳述式包含的IF條件。
-
IF條件不包含開始和結束陳述式。
-
IF條件後面開始 TRY區塊。
-
當您執行查詢時,會重新編譯IF區塊。
解決方案
累積更新資訊
SQL Server 2012 sp1 的累積更新 4
這個問題的修正程式首次發表累積的更新 4] 中。如需有關如何取得此累積更新套件,SQL Server 2012 sp1 的詳細資訊,請按一下下面的文章編號,移至 Microsoft 知識庫 」 中的文件︰
2833645累計 SQL Server 2012 sp1 更新 4注意假設組建便是累計的每個新的修正程式版本會包含所有的快速補充程式,並隨附於先前的 SQL Server 2012 SP1 的所有安全性修正都修正版本。我們建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,請按一下下列的文件編號,移至 Microsoft 知識庫中的文件:
SQL Server 2012年建置 SQL Server 2012 Service Pack 1 發行之後所發行的2772858
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
更多的資訊
如果要重現這個問題,請在 [SQL Server 2012年執行下列的異動性 SQL 陳述式︰
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
因應措施
若要解決這個問題,請在IF條件中加入開始和結束陳述式。
參考
如需 SQL Server 的累加式的服務模型的相關資訊,按一下下列的文件編號,請移至 Microsoft 知識庫 」 中的文件︰
935897的累加式服務模型可以使用從 SQL Server 小組製作報告的問題的 hotfix如需有關 SQL Server 更新的命名結構描述的詳細資訊,請按一下下面的文章編號,移至 Microsoft 知識庫 」 中的文件︰
822499命名結構描述,Microsoft SQL Server 軟體更新套件如需有關軟體更新術語的詳細資訊,請按一下下面的文章編號,移至 Microsoft 知識庫 」 中的文件︰
用來描述 Microsoft 軟體更新標準術語的編號 824684描述