【问题标题】:Statistics for calls to stored procedure对存储过程的调用统计
【发布时间】:2019-02-13 08:37:33
【问题描述】:

有什么方法可以在 SQL Server 上找出调用存储过程的统计信息?

我正在寻找以下信息:

  1. 调用存储过程的日期和时间
  2. 谁调用了存储过程(用户名)
  3. 即使用户收到错误消息“对象 'sp_name'、数据库 'db_name'、架构 'schema_name' 的 EXECUTE 权限被拒绝”,我也希望获得上述信息

【问题讨论】:

    标签: sql-server tsql stored-procedures usage-statistics


    【解决方案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/

    【讨论】:

    • 这正是我想要的。参考链接也非常有用。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多