加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 无论如何为“SELECT”语句创建SQL Server DDL触发

发布时间:2020-12-12 06:19:53 所属栏目:MsSql教程 来源:网络整理
导读:我正在处理一些敏感的Accounting表,我想审计在表上执行的任何SELECT语句或与它们相关的任何视图. 我没有在BOL(联机丛书)上找到任何与SELECT语句有关的DDL Events. DML触发器仅用于INSERT,UPDATE和DELETE. 是否可以通过SELECT语句记录谁访问表和视图? 解决方
我正在处理一些敏感的Accounting表,我想审计在表上执行的任何SELECT语句或与它们相关的任何视图.

我没有在BOL(联机丛书)上找到任何与SELECT语句有关的DDL Events.
DML触发器仅用于INSERT,UPDATE和DELETE.

是否可以通过SELECT语句记录谁访问表和视图?

解决方法

你有3个选择:

>如果要记录(并删除表权限),则允许通过存储过程进行访问
>如果要限制并保持“直接”访问,请将视图隐藏在视图后面
>运行永久跟踪

我会选择选项1或2,因为它们是您的应用程序的一部分并且是自包含的.

虽然,开始记录确实听起来有点迟:但应该事先限制对表的访问.

此外,如果最终用户没有直接更正(例如通过Web服务器或服务帐户),任何解决方案都会失败.除非你使用存储过程发送最终用户名…

查看示例:

CREATE VIEW dbo.MyTableMask
AS
SELECT *
FROM
    MyTable
    CROSS JOIN
    (SELECT 1 FROM SecurityList WHERE name = SUSER_SNAME())
--WHERE could use NOT EXISTS too with table
GO

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读