Saya mencari potongan kode standar yang dapat saya tempelkan ke dalam prosedur yang dapat mengulang semua parameter untuk proc dan mengambil nilai saat ini yang diteruskan--
Anda bisa mendapatkan semua nilai yang diteruskan untuk sp menggunakan kueri di bawah ini
Contoh :
Saya memiliki proc tersimpan di bawah ini yang memberi saya detail penjualan (hanya untuk demo)
alter proc dbo.getsales
(
@salesid int
)
as
begin
select
* from sales where [email protected]
end
Saya telah memanggil sp saya seperti di bawah ini..
exec dbo.getsales 4
Sekarang jika saya ingin mendapatkan nilai yang diteruskan, saya dapat menggunakan kueri di bawah ini
select top 10* from sys.dm_exec_cached_plans cp
cross apply
sys.dm_exec_text_query_plan(cp.plan_handle,default,default)
where objtype='proc'
yang menunjukkan kepada saya di bawah ini sebagai nilai waktu kompilasi
dengan itu, ada banyak hal yang perlu dipertimbangkan..kita dapat menggunakan metode xml untuk mendapatkan nilai ini
sekarang apa yang terjadi, jika saya menjalankan proc tersimpan yang sama lagi untuk nilai 2 ..
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)" ParameterRuntimeValue="(2)" />
Satu tangkapan penting di sini, adalah nilai di atas ditampilkan ketika saya memilih rencana eksekusi untuk ditampilkan dari ssms.
Tapi apa yang akan menjadi nilai dalam cache, mari kita lihat menggunakan kueri cache rencana di atas lagi
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)"/>
Itu masih menunjukkan nilai yang dikompilasi, ditambah kolom usecounts sebagai 5--`yang berarti rencana ini telah digunakan 5 kali dan parameter yang dilewati ketika rencana itu awalnya dikompilasi adalah 4.yang juga berarti, nilai waktu berjalan tidak disimpan dalam cache detail rencana..
Jadi secara ringkas, Anda bisa mendapatkan nilai runtime yang diteruskan ke proc tersimpan
- 1.Nilai yang diteruskan saat pernyataan dikompilasi(
Anda dapat mulai mengumpulkan info ini selama periode waktu tertentu dan mencatatnya ke proc yang tersimpan, saya pikir seiring waktu dengan server reboot, rencana kompilasi ulang Anda bisa mendapatkan set baru dari nilai parameter) - 2.Menghubungi tim DEV juga merupakan cara yang baik, karena mereka dapat memberi Anda daftar total parameter yang dapat dilewati, jika latihan ini berat