修正: 效能變慢或 SQL Server 2012年中 SQL Server 2008 R2 的分割資料表上的 AFTER 觸發程序執行時

文章翻譯 文章翻譯
文章編號: 2606883 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

請考慮下列案例:
  • Microsoft SQL Server 2012年或 Microsoft SQL Server 2008 R2 中,您可以建立磁碟分割表格。
  • 您建立 之後 任何觸發程序 插入刪除 在資料表執行的作業。
  • 您執行 插入刪除 在資料表上的作業。

在這個案例中,可能會發生效能變慢。此外,如果您執行 SQL 的程式碼剖析工具,可能會發生許多邏輯讀取。

發生的原因

之所以發生這個問題,原因如下:
  • 儲存引擎會在內部維護每個陳述式的單一版本鏈結。
  • 查詢執行會搜尋整個版本鏈結以尋找要插入的資料列的其中一個資料分割的磁碟分割。

解決方案

如果要解決這個問題,請套用下列 hotfix,然後使用-T2470 追蹤旗標

累積更新資訊

SQL Server 2012 累積的更新程式 1] 中的 SQL Server 2012年首次發表的修正這個問題。如需有關此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2679368 SQL Server 2012年的累積更新套件 1
附註因為組建是累計的每個新的修正程式版本會包含所有的快速補充程式,並隨附於先前的 SQL Server 2012年所有安全性修正程式會都修正版本。Microsoft 建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2692828 SQL Server 2012年組建 SQL Server 2012年發行之後所發行,
您必須套用 SQL Server 2012 hotfix,才能安裝 SQL Server 2012年程序。

SQL Server 2008 R2 Service Pack 1

累積更新資訊

累積更新 3 SQL Server 2008 R2 Service Pack 1 首次發表的修正這個問題。如需有關如何取得此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2591748 累積更新套件 3 SQL Server 2008 R2 Service Pack 1
附註因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,並且所有安全性修正程式先前的 SQL Server 2008 R2 隨附的修正版本。我們建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2567616 SQL Server 2008 R2 建置之後所發行的 SQL Server 2008 R2 Service Pack 1 所發行,

Hotfix 資訊

使用 Microsoft 的支援的 hotfix。然而,其目的只為修正問題這份文件中所述。此 hotfix 只適用於發生此特定問題的系統上。

如果此 hotfix 已開放下載,則 「 下載 Hotfix 」 區段中,在此知識庫文件的頂端。如果沒有出現這一節,將要求提交到 Microsoft 客戶服務及支援 」 取得 hotfix。

附註如果發生其他問題,或者需要進行疑難排解時,您可能必須建立個別的服務要求。收取支援費用會套用到其他支援問題,以及此特定 hotfix 無法解決的問題。如需完整清單的 「 Microsoft 客戶服務和支援的電話號碼,或建立個別的服務要求,請造訪下列 Microsoft 網站:
看到
附註「 下載 Hotfix 」 表單會顯示 hotfix 還是可以使用的語言。如果看不到您的語言,是因為 hotfix 未提供該語言。

必要條件

若要套用此 hotfix 之後,您必須具有 Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) 安裝。

重新啟動需求

您並沒有套用此 hotfix 之後,重新啟動電腦。

其他注意事項

此 hotfix 不會取代先前發行的 hotfix。

檔案資訊

檔案屬性 (或較新的檔案屬性),此 hotfix 的全域版具有下表所示。其日期和時間,這些檔案會列出在國際標準時間 (UTC)。當您檢視檔案資訊時,它會轉換為本地時間。若要查看 UTC 與當地時間的時差,請使用 時區 在 [定位點 日期和時間 在 [控制台] 中的項目。

所有支援的 SQL Server 2008 R2 SP1 的 x86 為主版
摺疊此表格展開此表格
檔名檔案版本檔案大小日期時間平台
資料庫2009.100.2776.043,053,9202011-年 9 月 15-01: 47x86

所有支援 x64 型版本 xSQL Server 2008 R2 SP1

摺疊此表格展開此表格
檔名檔案版本檔案大小日期時間平台
資料庫2009.100.2776.062,176,6082011-年 9 月 15-00: 57x64

對於所有支援的 ia-64新版程式碼SQL Server 2008 R2 SP1

摺疊此表格展開此表格
檔名檔案版本檔案大小日期時間平台
資料庫2009.100.2776.0122,105,6962011-年 9 月 15-00: 23IA-64


其他可行方案

如果要暫時略過這個問題,請變更AFTER觸發程序,在插入 INSTEAD OF觸發程序,或在刪除 INSTEAD OF觸發程序。

比方說,您可以執行下列陳述式,若要建立的AFTER觸發程序:
CREATE TRIGGER TR_Test ON Test FOR INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED END GO
在這個案例中,變更INSTEAD OF 插入AFTER觸發程序使用下列陳述式:
CREATE TRIGGER TR_Test ON Test INSTEAD OF INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED INSERT INTO Test (Groupe) SELECT @groupe FROM INSERTED END

狀況說明

Microsoft 已確認這是"適用於 」 一節所列出的 Microsoft 產品中的問題。

屬性

文章編號: 2606883 - 上次校閱: 2012年4月16日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2012 Developer
關鍵字:?
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbautohotfix kbmt KB2606883 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:2606883
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com