По умолчанию SQL Server не поддерживает такую информацию.Вы должны настроить один из следующих методов, чтобы собрать его:
- Аудит SQL
- Расширенные события
- Трассировка SQL
ПримерАудит SQL для такой задачи:
-- step 1:
USE [master]
GO
CREATE SERVER AUDIT [SrvAudit_sp_execution]
TO FILE
( FILEPATH = N'E:\DBA_Audit'
,MAXSIZE = 20 MB
,MAX_ROLLOVER_FILES = 50
,RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000 -- equal to 1 second
,ON_FAILURE = CONTINUE
)
GO
-- step 2:
CREATE DATABASE AUDIT SPECIFICATION [DBAudit_sp_execution]
FOR SERVER AUDIT [SrvAudit_sp_execution]
GO
-- step 3:
ALTER DATABASE AUDIT SPECIFICATION [DBAudit_sp_execution]
FOR SERVER AUDIT [SrvAudit_sp_execution]
ADD (EXECUTE ON OBJECT::dbo.proc1 BY [public]) ;
-- step 4:
ALTER SERVER AUDIT [SrvAudit_sp_execution] WITH (STATE = ON);
USE [_DemoDB]
ALTER DATABASE AUDIT SPECIFICATION [DBAudit_sp_execution]
FOR SERVER AUDIT [SrvAudit_sp_execution] WITH (STATE = ON);
Данные аудита можно дополнительно просмотреть в SSMS или запросить через: sys.fn_get_audit_file
Ссылки:
https://www.mssqltips.com/sqlservertip/3259/several-methods-to-collect-sql-server-stored-procedure-execution-history/