Szukam standardowego fragmentu kodu, który mógłbym wkleić do procedury, która może przejść przez wszystkie parametry procedury i pobrać bieżące wartości przekazane w--
Możesz uzyskać wszystkie wartości przekazane do sp za pomocą poniższego zapytania
Przykład:
Mam poniżej zapisany proces, który daje mi szczegóły sprzedaży (tylko dla wersji demonstracyjnej)
alter proc dbo.getsales
(
@salesid int
)
as
begin
select
* from sales where [email protected]
end
Nazwałem mojego sp jak poniżej.
exec dbo.getsales 4
Teraz, jeśli chcę przekazać wartość, mogę użyć poniższego zapytania
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'
który pokazał mi poniżej jako wartość czasu kompilacji
Mając to na uwadze, jest wiele rzeczy do rozważenia.. możemy użyć metod xml, aby uzyskać tę wartość
co się stanie, jeśli ponownie uruchomię ten sam przechowywany proces dla wartości 2 ..
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)" ParameterRuntimeValue="(2)" />
Jednym z ważnych haczyków jest to, że powyższe wartości są wyświetlane, gdy wybrałem plan wykonania do wyświetlenia z ssms.
Ale jaka będzie wartość w pamięci podręcznej, zobaczmy ją ponownie za pomocą powyższego zapytania w pamięci podręcznej planu
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)"/>
Wciąż pokazuje skompilowaną wartość, plus kolumna liczników użycia jako 5--`, co oznacza, że ten plan został użyty 5 razy, a parametr, który został przekazany podczas początkowej kompilacji planu to 4. co oznacza również, że wartości czasu działania nie są przechowywane w pamięci podręcznej szczegóły planów...
Podsumowując, możesz uzyskać wartości runtime przekazane do zapisanego proc
- 1.Wartości, które są przekazywane podczas kompilacji instrukcji (
Możesz zacząć zbierać te informacje przez pewien okres czasu i logować je do zapisanego proc, myślę, że z biegiem czasu po ponownym uruchomieniu serwera, zaplanuj rekompilacje, możesz uzyskać nowy zestaw wartości parametrów) - 2.Skontaktowanie się z zespołem DEV jest również dobrym sposobem, ponieważ mogą podać pełną listę parametrów, które można przekazać, jeśli to ćwiczenie jest uciążliwe