使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

Microsoft 將 Microsoft SQL Server 2008 R2 Service Pack 1 (SP1)修正為一個可下載的檔案。 因為修正程式是累加的,所以每個新發行版本本都包含舊版 SQL Server 2008 R2 Service Pack 1 (SP1)更新版本中所包含的所有熱修復程式和安全性更新。

徵狀

在 Microsoft SQL Server 2008 R2 中產生 SQL Server 效能條件警示時,您可能會收到下列錯誤訊息:

Msg 512、Level 16、State 1、程式 sp_sqlagent_get_perf_counters、行40Subquery 傳回1個以上的值。 當子查詢遵循 =、! =、<、<=、>、>= 或子查詢用做為運算式時,則不允許這麼做。

此外,在這種情況下,錯誤訊息會記錄在 SQL Server 代理程式錯誤記錄中。注意: 這個問題也會在 Microsoft SQL Server 2008 中發生。

原因

發生這個問題是因為 msdb.dbo.sp_sqlagent_get_perf_counters 系統存儲程式的子查詢不正確地計算計數器的值。 子查詢在子查詢的條件中,缺少 [object_name] 資料行的內部聯結關聯性。 因此,不正確地傳回多個資料列,並會出現「症狀」一節中所提及的問題。注意: 當產生 SQL Server 效能條件警示時,會執行 msdb.dbo.sp_sqlagent_get_perf_counters 系統存儲程式。

解決方案

累積更新資訊

SQL Server 2008 R2 SP1 的累積更新套件3

此問題的修正程式是在累積更新套件3中第一次發行。如需有關如何取得 SQL Server 2008 R2 SP1 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2591748 SQL Server 2008 R2 SP1 的累積更新套件3注意: 因為組建是累加的,所以每個新的更新版本都包含先前 SQL Server 2008 R2 SP1 更新版本中所包含的所有修復程式及所有安全性更新。 我們建議您考慮套用包含此熱修復程式的最新更新版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2567616 在發行 SQL Server 2008 R2 SP1 之後發行的 SQL Server 2008 R2 組建

因應措施

若要解決此問題,請更新 msdb.dbo.sp_sqlagent_get_perf_counters 系統儲存程式的子查詢。 若要這樣做,請在[值]資料行計算中使用的四個子查詢的WHERE子句中,新增下列條件:

(spi1.[object_name] = spi2.[object_name])

新增條件之後,子查詢會如下所示:

SELECT CASE spi2.cntr_value WHEN 0 THEN 1 ELSE spi2.cntr_value ENDFROM sys.dm_os_performance_counters spi2WHERE (spi1.[object_name] = spi2.[object_name])AND (spi1.counter_name + ' ' = SUBSTRING(spi2.counter_name, 1, PATINDEX('% Base%', spi2.counter_name)))AND (spi1.instance_name = spi2.instance_name)AND (spi2.cntr_type = @perfTypeLargeRawBase

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×