dan*_*die 8 t-sql sql-server ddl triggers sql-server-2005
我正在处理一些敏感的会计表,我想审计SELECT
在表上执行的任何语句或与它们相关的任何视图.
我没有在BOL(联机丛书)上找到任何与声明有关的DDL事件SELECT
.和DML触发器是INSERT
,UPDATE
和DELETE
只.
是否可以通过SELECT
语句记录谁访问表和视图?
Rem*_*anu 10
是的,可以通过在AUDIT_DATABASE_OBJECT_ACCESS_EVENT事件上创建事件通知来实现.不过,做这样的事情的成本会非常高.
使用审计基础架构或使用gbn推荐的自定义访问包装器要好得多.
你有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
Run Code Online (Sandbox Code Playgroud)