Sql server 如何在sql数据库(sql Server)中捕获使用select语句的用户

Sql server 如何在sql数据库(sql Server)中捕获使用select语句的用户,sql-server,tsql,Sql Server,Tsql,我想捕获从数据库读取数据的人。我想用触发器来选择捕获。我尝试了以下代码。但它失败了,因为select_表不是正确的事件类型 CREATE TRIGGER tr_tblCheckingAccount_ForUpdate ON ALL SERVER FOR SELECT_TABLE AS BEGIN DECLARE @MYData XML SELECT @MyData=EVENTDATA() SELECT @MYData INSERT INTO ReadOnBr

我想捕获从数据库读取数据的人。我想用触发器来选择捕获。我尝试了以下代码。但它失败了,因为select_表不是正确的事件类型

CREATE TRIGGER tr_tblCheckingAccount_ForUpdate
ON ALL SERVER
FOR SELECT_TABLE
AS 
BEGIN 
    DECLARE @MYData XML
    SELECT @MyData=EVENTDATA()
    SELECT @MYData

    INSERT INTO ReadOnBranchReport 
    VALUES 
    (
        'User Name '+@MYData.value('/EVENT_INSTANCE/LoginName)[1]', 'NVARCHAR(270)')+
        ' read The Data from '+@MYData.value('/EVENT_INSTANCE/ObjectName)[1]', 'NVARCHAR(270)')+
        'table'

    )
END


我不知道select的正确事件类型。

触发器不适用于
select
。您有两个选择:

  • 实现一个存储过程,该过程在记录访问事件时返回数据。如果您担心用户绕过存储过程,请使用安全权限来阻止他们访问表,存储过程除外
  • 实施审核

  • 你能提供一个MRE表格,你已经有代码了吗?嗨,我编辑了这个问题。请检查问题的主体谢谢可能您需要设置