Sql-Server
如何在 SQL 中獲取使用使用者名執行的查詢的歷史記錄
我可以使用以下方法執行查詢:
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
但我也在尋找
username
執行這些查詢的列。
我建議您創建伺服器端跟踪或啟用 SQL 審計來跟踪您不信任的使用者的活動。
請記住,如果清除了 DMV、重新啟動 SQL Server 等,則會重置 DMV 數據。
您可以獲得的最接近的是使用以下查詢:
/****************************************************** Script : Findout Who did what ? Author : Kin Shah .. written for dba.stackexchange.com *******************************************************/ USE master go SELECT sdest.DatabaseName ,sdes.session_id ,sdes.[host_name] ,sdes.[program_name] ,sdes.client_interface_name ,sdes.login_name ,sdes.login_time ,sdes.nt_domain ,sdes.nt_user_name ,sdec.client_net_address ,sdec.local_net_address ,sdest.ObjName ,sdest.Query FROM sys.dm_exec_sessions AS sdes INNER JOIN sys.dm_exec_connections AS sdec ON sdec.session_id = sdes.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(sdec.most_recent_sql_handle) FOR XML PATH('') ,TYPE ), '') AS Query FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle) ) sdest where sdes.session_id <> @@SPID --and sdes.nt_user_name = '' -- Put the username here ! ORDER BY sdec.session_id