徵狀
假設您在具有多個 Cpu 的電腦上,查詢 Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2012 中的二進位大型物件(BLOB)欄。 查詢會使用 NOLOCK 提示。 在這種情況下,電腦上會出現大量的 CPU 使用量。注意如果電腦已安裝16個或以上的 Cpu,就很可能會發生這個問題。
原因
之所以會發生此問題,是因為 spinlock 回退演算法沒有效率。
解決方案
累積更新資訊
SQL Server 2012 SP1 的累積更新2
此問題的修正程式是在累積更新2中第一次發行。如需有關如何取得 SQL Server 2012 SP1 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2790947 SQL Server 2012 的累積更新套件 2 Service Pack 1注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2012 SP1 修正版本中所包含的所有修復程式及所有安全修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2772858 在發行 SQL Server 2012 Service Pack 1 之後發行的 SQL Server 2012 組建
SQL Server 2012 累積更新5
此問題的修正程式是在累積更新5中第一次發行。如需如何取得此 SQL Server 2012 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2777772 SQL Server 2012 的累積更新套件5注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2012 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2692828 在發行 SQL Server 2012 之後發行的 SQL Server 2012 組建
SQL Server 2008 R2 Service Pack 2
此問題的修正程式是在累積更新3中第一次發行。如需有關如何取得適用于 SQL Server 2008 R2 Service Pack 2 之累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2754552 SQL Server 2008 R2 Service Pack 2 的累積更新套件3注意: 因為組建是累加的,所以每個新的修正程式版本都包含舊版 SQL Server 2008 R2 Service Pack 2 (修正版本)所包含的所有修復程式及所有安全修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2730301 在發行 SQL Server 2008 R2 Service Pack 2 之後發行的 SQL Server 2008 R2 組建
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。
因應措施
若要解決此問題,請使用下列其中一種方法:
-
減少二進位大型物件欄的大小。
-
從查詢中移除 NOLOCK 提示。
-
減少 SQL Server 使用的 Cpu 數目。