Gejala
Anggaplah Anda telah menerapkan Microsoft SQL Server 2012 Service Pack 2 (SP2) di komputer Anda. Anda memanggil cdc.fn_cdc_get_net_changes_<capture_instance> mengubah data capture (cdc) dalam prosedur sp_executesql disimpan, dan mungkin berasal dari sumber aplikasi seperti server manajemen SQL Server (SSMS), CDC itu sendiri, atau paket layanan integrasi SQL Server (SSIS). Dalam situasi ini, Anda mengalami kinerja yang buruk di SQL Server 2012.Catatan Penurunan kinerja bisa besar. Misalnya, kueri dapat diselesaikan dalam beberapa detik di SQL Server 2012 SP1. Namun, kueri yang sama dapat memakan waktu beberapa jam untuk dijalankan di SQL Server 2012 SP2. Selain itu, pembaruan Statistik tidak membantu masalah tersebut.
Penyebab
Masalah ini terjadi karena masalah dalam perkiraan Cardinality yang sangat mempengaruhi kinerja <cdc.fn_cdc_get_net_changes_ capture_instance kueri> .
Pemecahan Masalah
Masalah ini pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut ini.
Pembaruan kumulatif 3 untuk SQL Server 2012 SP2 /en-us/help/3002049
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
Penyelesaian Masalah
Untuk mengatasi masalah ini, gunakan petunjuk kueri opsi (mengkompilasi ulang) dalam kueri Anda. Jika kueri dipicu dari komponen CDC SSIS, maka opsi (mengkompilasi ulang) petunjuk mungkin dipaksa dengan membuat panduan rencana seperti dalam contoh berikut: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)'; Catatan Anda harus mengganti kueri contoh dengan kueri yang dihadapi masalah Anda. Ini bisa diambil dari jejak Profiler , sehingga tidak ada karakter tambahan yang ditambahkan secara tidak sengaja. Selain itu, pastikan bahwa kueri pemilihan diletakkan dalam satu baris (misalnya, tidak boleh ada carriage return atau umpan baris) sehingga panduan rencana bisa berhasil. Anda mungkin juga harus menggunakan DBCC FREEPROCCACHE untuk mengetuk dari paket lama dari singgahan.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".