Tôi đang tìm kiếm một đoạn mã chuẩn mà tôi có thể đưa vào quy trình có thể lặp qua tất cả các tham số cho proc và truy xuất các giá trị hiện tại được chuyển vào--
Bạn có thể lấy tất cả các giá trị được chuyển vào cho một sp bằng cách sử dụng truy vấn dưới đây
Ví dụ:
Tôi có proc được lưu trữ dưới đây cung cấp cho tôi chi tiết bán hàng (chỉ dành cho bản demo)
alter proc dbo.getsales
(
@salesid int
)
as
begin
select
* from sales where [email protected]
end
Mình đã gọi sp của mình như bên dưới ..
exec dbo.getsales 4
Bây giờ nếu tôi muốn nhận giá trị được truyền, tôi có thể sử dụng truy vấn bên dưới
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'
cho tôi thấy bên dưới là giá trị thời gian biên dịch
như đã nói, có nhiều điều cần xem xét..chúng ta có thể sử dụng các phương thức xml để nhận giá trị này
bây giờ điều gì sẽ xảy ra, nếu tôi chạy lại cùng một chương trình đã lưu trữ với giá trị là 2 ..
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)" ParameterRuntimeValue="(2)" />
Một điểm quan trọng ở đây, là các giá trị trên được hiển thị khi tôi chọn kế hoạch thực thi để hiển thị từ các thăm dò.
Nhưng giá trị trong bộ nhớ cache sẽ là gì, hãy xem nó bằng cách sử dụng lại truy vấn bộ nhớ cache kế hoạch ở trên một lần nữa
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)"/>
Nó vẫn hiển thị giá trị đã biên dịch, cộng với cột usecounts là 5 - `` nghĩa là kế hoạch này đã được sử dụng 5 lần và tham số đã được truyền khi kế hoạch được biên dịch ban đầu là 4. đồng thời cũng có nghĩa là, các giá trị thời gian chạy không được lưu trữ trong bộ nhớ đệm chi tiết kế hoạch ..
Vì vậy, tóm lại, bạn có thể nhận các giá trị thời gian chạy được chuyển tới proc được lưu trữ
- 1. Các giá trị được chuyển trong khi câu lệnh được biên dịch (
Bạn có thể bắt đầu thu thập thông tin này theo thời gian và ghi lại chúng dựa trên chương trình đã lưu trữ, tôi nghĩ rằng theo thời gian khi máy chủ khởi động lại, hãy lập kế hoạch biên dịch lại, bạn có thể nhận được bộ mới giá trị tham số) - 2. Liên hệ với nhóm DEV cũng là một cách tốt, vì họ có thể cung cấp cho bạn danh sách tổng số các tham số có thể được thông qua, nếu thisexcercise là cubersome