Статистика обращений к хранимой процедуре

есть ли способ узнать статистику вызовов хранимой процедуры на SQL Server?

Я ищу следующую информацию:

  1. Дата и время вызова хранимой процедуры
  2. Кто вызвал хранимую процедуру (имя пользователя)
  3. Я хочу иметь вышеуказанную информацию, даже если пользователь получил сообщение об ошибке «Разрешение EXECUTE было отклонено для объекта« sp_name », база данных« db_name », схема« schema_name »»

person phoenix    schedule 13.02.2019    source источник


Ответы (1)


По умолчанию 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/

person Alexander Volok    schedule 13.02.2019
comment
Это именно то, что я искал. Также справочная ссылка была очень полезной. Спасибо. - person phoenix; 13.02.2019