查找谁执行了存储过程

Aru*_*lai 2 sql-server stored-procedures

SQL Server 中是否有一种方法/任何函数/DMV 可以提供谁执行了特定数据库的存储过程?

Bre*_*zar 10

如果存储过程已经运行并且您正在寻找可靠的证据,并且您正在寻找历史记录而没有提前设置某些内容,那么您将需要分析事务日志

如果您询问是因为您已准备好在下次更改服务器或数据库时做好准备,您可以:

  • 在存储过程中添加一行以将该信息记录到表中
  • 使用 Profiler 或扩展事件运行跟踪,只关注该存储过程
  • 实施审计
  • 如果存储过程运行了很长时间,您可以每隔几分钟通过代理作业将sp_WhoIsActive 记录到表中,然后再返回这些日志以查看谁在运行它


Jam*_*mes 5

非技术答案:

问问你的团队。

如果有人能够运行破坏您的数据库的存储过程,那么错误不在于运行 sp 的人。如果您是 DBA,您的工作就是确保 sp 可以安全运行,如果它们不安全,则使它们安全,如果不能使它们安全,则限制访问。

如果您正在将精力用于寻找替罪羊,请考虑将精力用于修补围栏。95% 的情况下,数据库管理都非常简单。你得到报酬是为了对它负责。

  • 不过,我不会假设提出问题的人是数据库管理员。例如,他们可能是一名开发人员,进行事后分析以找出为什么即使存储过程已被弃用,它仍然被调用。 (3认同)