Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

徵狀

假設您已在電腦上套用 Microsoft SQL Server 2012 Service Pack 2 (SP2)。 您可以呼叫sp_executesql存儲程式中的cdc.fn_cdc_get_net_changes_<Capture_instance>變更資料捕獲(cdc)查詢,這可能來自于 SQL server Management STUDIO Server (SSMS)、Cdc 本身或 sql server Integration Services (SSIS)套件等應用程式來源。 在這種情況下,您會在 SQL Server 2012 中遇到較差的效能。注意效能的下降可能很大。 例如,在 SQL Server 2012 SP1 中,查詢可以在數秒內完成。 不過,相同的查詢可能需要幾個小時的時間,才能在 SQL Server 2012 SP2 中執行。 此外,統計更新無法協助問題。

原因

之所以會發生這個問題,是因為基數估計中嚴重影響 cdc.fn_cdc_get_net_changes_<capture_instance>查詢的效能問題。

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:

因應措施

若要解決此問題,請在查詢中使用 Option (重新編譯) 查詢提示。 當查詢是從 SSIS CDC 元件觸發時, 選項(重新編譯) 提示可能會以下列範例所示的建立方案指南來強制執行:Exec sp_create_plan_guide @name = N'CDC_Query1_PlanGuide', @stmt = N'select [__$start_lsn],[__$operation],[__$update_mask],[Column1],[Column2],[Column3] from [cdc].[fn_cdc_get_net_changes_dbo_Table1](CONVERT(binary(10), @cs, 1), CONVERT(binary(10), @ce, 1), @mode)',@type = N'SQL',@module_or_batch = NULL, @params = N'@ce nvarchar(22),@mode nvarchar(14),@cs nvarchar(22)', @hints = N'OPTION (RECOMPILE)'; 注意您必須將範例查詢取代為您面臨之問題的查詢。 它可以從 探測器 追蹤中取得,所以不會無意間新增額外的字元。 此外,請務必將SELECT 查詢放在單一行中(例如,它不應該有任何回車或分行符號),才能讓方案指南順利運作。 您也可以使用 DBCC FREEPROCCACHE ,從快取中挖空舊方案。

狀態

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

Need more help?

Want more options?

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

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

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×