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

前端之家收集整理的这篇文章主要介绍了sql-server – 无论如何为“SELECT”语句创建SQL Server DDL触发器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在处理一些敏感的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

猜你在找的MsSQL相关文章