无论如何,为“SELECT"创建一个 SQL Server DDL 触发器;声明?

Anyway to create a SQL Server DDL trigger for quot;SELECTquot; statements?(无论如何,为“SELECT创建一个 SQL Server DDL 触发器;声明?)
本文介绍了无论如何,为“SELECT"创建一个 SQL Server DDL 触发器;声明?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理一些敏感的会计表,我想审计在该表上执行的任何 SELECT 语句或与它们相关的任何视图.

I am dealing with some sensitive Accounting tables and I would like to audit any SELECT statement executed on the table or any views associated with them.

我在 BOL(在线图书) 与 SELECT 语句有关.DML 触发器仅用于 INSERTUPDATEDELETE.

I did not find any DDL Events on BOL (Books Online) that had anything to do with SELECT statement. And DML triggers are for INSERT, UPDATE and DELETE only.

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

Is it possible to log who accesses table and views through SELECT statement?

推荐答案

您有 3 个选择:

  • 如果您想登录(并删除表权限),则允许通过存储过程进行访问
  • 如果您想限制并保持直接"访问,请将表格隐藏在视图后面
  • 运行永久跟踪

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

I'd go for options 1 or 2 because they are part of your application and self contained.

虽然,这听起来确实有点晚才开始记录:应该预先限制对表的访问.

Although, this does sound a bit late to start logging: access to the table should have been restricted up front.

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

Also, any solution fails if end users do not correct directly (eg via web server or service account). Unless you use stored procs to send in the end user name...

查看示例:

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

这篇关于无论如何,为“SELECT"创建一个 SQL Server DDL 触发器;声明?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
SSIS: Model design issue causing duplications - can two fact tables be connected?(SSIS:模型设计问题导致重复-两个事实表可以连接吗?)
SQL Server Graph Database - shortest path using multiple edge types(SQL Server图形数据库-使用多种边类型的最短路径)
Invalid column name when using EF Core filtered includes(使用EF核心过滤包括时无效的列名)
How should make faster SQL Server filtering procedure with many parameters(如何让多参数的SQL Server过滤程序更快)
How can I generate an entity–relationship (ER) diagram of a database using Microsoft SQL Server Management Studio?(如何使用Microsoft SQL Server Management Studio生成数据库的实体关系(ER)图?)