Търся стандартен код, който мога да вмъкна в процедурата, който може да премине през всички параметри за процедурата и да извлече текущите стойности, предадени в--
Можете да получите всички стойности, предадени за sp, като използвате заявката по-долу
Пример:
По-долу имам съхранена процедура, която ми дава подробности за продажбите (само за демонстрация)
alter proc dbo.getsales
(
@salesid int
)
as
begin
select
* from sales where [email protected]
end
Обадих се на моя sp както по-долу..
exec dbo.getsales 4
Сега, ако искам да получа предадена стойност, мога да използвам заявката по-долу
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'
което ми показа по-долу като стойност на времето за компилиране
с това казано, има много неща, които трябва да вземем предвид.. можем да използваме xml методи, за да получим тази стойност
сега какво ще се случи, ако стартирам същата съхранена процедура отново за стойност 2 ..
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)" ParameterRuntimeValue="(2)" />
Една важна уловка тук е, че горните стойности се показват, когато избрах план за изпълнение за показване от ssms.
Но каква ще бъде стойността в кеша, нека го видим, като използваме отново заявката за кеша на плана по-горе
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)"/>
Той все още показва компилираната стойност, плюс колоната usecounts като 5--`което означава, че този план е бил използван 5 пъти и параметърът, който е бил предаден при първоначалното компилиране на плана, е 4. което също означава, че стойностите за време на изпълнение не се съхраняват в кеша подробности за плановете..
Така че в обобщение можете да получите стойности по време на изпълнение, предадени на съхранената процедура
- 1.Стойности, които се предават, докато операторът се компилира (
Можете да започнете да събирате тази информация за период от време и да ги регистрирате в съхранена процедура, мисля, че с течение на времето с рестартиране на сървъра, планиране на повторни компилации можете да получите нов набор на стойностите на параметрите) - 2. Свързването с екипа на DEV също е добър начин, тъй като те могат да ви дадат пълен списък с параметри, които могат да бъдат предадени, ако това упражнение е тромаво