sql server为特定用户启用日志

sql server为特定用户启用日志,sql,sql-server,database,Sql,Sql Server,Database,我在数据库中创建了多个用户帐户,这些帐户由多个用户使用。现在我想要一种方法,这样我可以记录所有运行的查询&应该记录那些特定用户执行的操作 某些特定用户是否可以记录其事件 谢谢否您不能这样做,也就是说,您不能为特定用户启用日志记录,而将其余的保留下来。如果要获取用户的特定详细信息,可以使用SQL Server Management Studio从活动监视器检查活动 您可以尝试查询以获取查询: SELECT cr.DatabaseName ,s.session_id ,s.host_

我在数据库中创建了多个用户帐户,这些帐户由多个用户使用。现在我想要一种方法,这样我可以记录所有运行的查询&应该记录那些特定用户执行的操作

某些特定用户是否可以记录其事件


谢谢

您不能这样做,也就是说,您不能为特定用户启用日志记录,而将其余的保留下来。如果要获取用户的特定详细信息,可以使用SQL Server Management Studio从活动监视器检查活动

您可以尝试查询以获取查询:

SELECT cr.DatabaseName
    ,s.session_id
    ,s.host_name
    ,s.program_name
    ,s.client_interface_name
    ,s.login_name
    ,s.login_time
    ,s.nt_domain
    ,s.nt_user_name
    ,c.client_net_address
    ,c.local_net_address
    ,cr.ObjName
    ,cr.Query
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_exec_connections AS c ON c.session_id = s.session_id
CROSS APPLY (
    SELECT db_name(dbid) AS DatabaseName
        ,object_id(objectid) AS ObjName
        ,ISNULL((
                SELECT TEXT AS [processing-instruction(definition)]
                FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)
                FOR XML PATH('')
                    ,TYPE
                ), '') AS Query

    FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)
    ) cr
where s.nt_user_name = '' -- filter here your user name
and s.session_id <> @@SPID
ORDER BY c.session_id

从SQL Server 2008 R2中,您可以使用管理->会话下的扩展事件

您可以为sql\u statement\u completed事件创建会话日志,并为特定用户进行筛选


您可以查看有关和类似问题的更多信息。

好的,我们是否可以通过任何方式或查询获得特定用户执行的查询列表?谢谢您的回复。那么,对于在数据库上完成特定用户工作的日志,您有什么建议?另外,活动监视器占用更多内存吗?因为它将在服务器上使用。
SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC