如何找出数据库用户访问了哪些表和存储过程?

Posted

技术标签:

【中文标题】如何找出数据库用户访问了哪些表和存储过程?【英文标题】:How can I find out which tables and stored procedures a database user has accessed? 【发布时间】:2019-09-04 18:03:22 【问题描述】:

有没有办法找出用户访问了哪些表和存储过程?请注意,这是用户已经实际访问的内容,而不是他们可以访问的内容。

对于表,是否也可以知道访问是读还是写?

我想要此信息来确定可以为该用户删除哪些数据库权限。

【问题讨论】:

请在投反对票之前发表评论并提供一些建设性的反馈。我试图清楚和简洁地说明我的要求,但如果我可以扩展任何内容,请告诉我,我会编辑这个问题。我用谷歌搜索了一段时间,找不到任何人问同样的问题。 查看 ApexSQL 审计,我是一名开发人员,自己不使用审计工具,但我的 DBA 说特定工具(Apex 有很多)允许审计所有更改,并且可以记录单独的 SELECT 和 EXEC 语句。我们实际上并没有这样做,所以我不能说它的效果如何,但他说这是一种选择。 @RobertSheahan 对此表示感谢。我将首先调查 SQLGeorge 作为答案发布的内容,因为它是内置的,因此不涉及任何成本。 【参考方案1】:

这是可能的,但不是过去。在 SQL Server 2014 上,您可以设置特定的监控任务(称为“审计”),以便从现在开始收集您想要的访问数据。

【讨论】:

谢谢。看起来它会成功的。你指的是this吗?它表明这可以从 SQL Server 2008 中获得,因此请确保它是您的想法。 是的,就是这样。您还可以在 Microsoft 站点上找到文档。 docs.microsoft.com/en-us/sql/relational-databases/security/…

以上是关于如何找出数据库用户访问了哪些表和存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

如何导出存储过程函数包和触发器的定义语句?如何导出表和索引的创建语句?

表和视图的区别,存储过程和函数的区别?

SQL SERVER如何查看一个表被哪些存储过程用到?用哪个系统存储过程?

Sql Server - 有啥方法可以找到哪些存储过程返回集合,哪些不返回?

表和存储过程未包含在生成的脚本中

如何在 PowerApps 中运行 SQL Server 存储过程