Estou procurando um pedaço de código padrão que eu possa inserir no procedimento que possa percorrer todos os parâmetros do proc e recuperar os valores atuais passados--
Você pode obter todos os valores passados para um sp usando a consulta abaixo
Exemplo:
Tenho abaixo o proc armazenado que me dá detalhes de vendas (somente para demonstração)
alter proc dbo.getsales
(
@salesid int
)
as
begin
select
* from sales where [email protected]
end
Eu chamei meu sp como abaixo ..
exec dbo.getsales 4
Agora, se eu quiser que o valor seja passado, posso usar a consulta abaixo
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'
que me mostrou abaixo como o valor do tempo de compilação
com isso dito, há muitas coisas a considerar.. podemos usar métodos xml para obter esse valor
agora o que acontece, se eu executar o mesmo proc armazenado novamente para o valor de 2 ..
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)" ParameterRuntimeValue="(2)" />
Uma captura importante aqui é que os valores acima são mostrados quando eu selecionei o plano de execução para mostrar do ssms.
Mas qual será o valor no cache, vamos vê-lo usando a consulta de cache do plano acima novamente
<ColumnReference Column="@salesid" ParameterCompiledValue="(4)"/>
Ele ainda está mostrando o valor compilado, mais a coluna usecounts como 5--`o que significa que este plano foi usado 5 vezes e o parâmetro que foi passado quando o plano foi compilado inicialmente é 4.o que também significa que os valores de tempo de execução não são armazenados em cache detalhes dos planos..
Então, em resumo, você pode obter valores de tempo de execução passados para o proc armazenado
- 1.Valores que são passados enquanto a instrução é compilada (
Você pode começar a coletar essas informações ao longo do tempo e registrá-las no proc armazenado, acho que com o tempo com reinicializações do servidor, recompilações de planos, você pode obter um novo conjunto de valores de parâmetro) - 2. Entrar em contato com a equipe DEV também é uma boa maneira, pois eles podem fornecer uma lista total de parâmetros que podem ser passados, se este exercício for cúbico