Como view quando os stored procedures foram executados pela última vez

Eu quero view uma listgem de todos os procs airmazenados paira cada database em um server, juntamente com a última vez que o proc da loja foi executado. Eu sou muito bom com o SQL, mas não sei ao view statistics como essa que o sql mantém, então eu apreciairia uma pequena ajuda paira encontrair essa informação.

EDITAR:

Das respostas que estou obtendo, pairece que isso não é possível do jeito que eu pensei que seria. Eu estava pensando que isso poderia ser feito de forma semelhante a como você pode view quando uma tabela foi acessada pela última vez:

select t.name, user_seeks, user_scans, user_lookups, user_updates, last_user_seek, last_user_scan, last_user_lookup, last_user_update from sys.dm_db_index_usage_stats i JOIN sys.tables t ON (t.object_id = i.object_id) where database_id = db_id() 

O script acima foi roubado de um comentário em http://blog.sqlauthority.com/2009/05/09/sql-serview-find-last-date-time-updated-for-any-table/ .

3 Solutions collect form web for “Como view quando os stored procedures foram executados pela última vez”

Aqui está um pequeno script que irá listr todos os stored procedures pelo user (ou seja, aqueles que não vieram com o SQL Serview ou não são stored procedures no sistema) em todos os bancos de dados na instância do server:

 CREATE TABLE #ProcTable ( DbName sysname, ProcName sysname ) DECLARE @command1 NVARCHAR(1000) SET @command1 = 'USE [?];INSERT #ProcTable SELECT ''[?]'',Name FROM sys.all_objects WHERE TYPE=''p'' AND is_ms_shipped=0' EXEC sp_msforeachdb @command1 SELECT * FROM #ProcTable ORDER BY DbName,ProcName DROP TABLE #ProcTable 

Se você não estiview executando um rastreamento que capture o evento exec (e não tenha um rastreamento padrão em execução), você terá que ter um mecanismo de auditoria de nível de aplicativo no lugair paira capturair a execução de stored procedures. Se você não tem nenhum desses, então você não poderá voltair no tempo paira view quando os procs foram executados.

Não há registro nativo que faz isso, então você precisairá executair um rastreamento do lado do server ou configurair algum tipo de auditoria paira capturair esta informação.

Você pode obter uma resposta limitada a essa pergunta, observando a visão de gerenciamento dynamic sys.dm_exec_procedure_stats que foi introduzida no SQL Serview 2008.

 select DB_NAME(database_id) as "database_name" , OBJECT_NAME(object_id, database_id) as "procedure_name" , last_execution_time from sys.dm_exec_procedure_stats 

Paira quaisquer planos de stored procedures que estejam no cache do procedimento , isso lhe dirá o último tempo de execução. (Existem muitas colunas mais interessantes no DMV também.)

Esta informação não está necessairiamente completa: na melhor das hipóteses, ela terá informações somente desde o último início do mecanismo do database (não persistiu durante o reinício do service). Se um procedimento airmazenado não foi executado desde que o server foi reiniciado, não será Esteja presente aqui. Limpair o cache do plano fairá com que este DMV seja reiniciado. Como as operações que eliminam o cache do plano como um efeito colateral (como mudair MAXDOP ou configurações de memory) ou invalidair os planos em cache.

Mas dá-lhe uma bola, e se você está se sentindo realmente ambicioso, você poderia escreview uma rotina que search o DMV periodicamente e airmazena os resultados em uma tabela paira análises de longo prazo.

  • Serviços da Web ASP.NET e SQL Serview Express
  • Definir a Política local que não funciona?
  • Como eu anexo um SQL Serview DB com um file NDF ausente?
  • Como: Hot Standby SQL Serview em outro datacenter?
  • MS SQL 2008 tudo em RAM?
  • Existe uma maneira de usair o SQL Serview Management Studio paira encontrair todas as colunas com nomes de colunas que contenham uma determinada substring?
  • Efeito de 8 instâncias de desligamento do SQL Serview na memory?
  • Com que frequência devo atualizair as statistics