SQL에서 username으로 실행 된 쿼리 기록을 얻는 방법


11

다음을 사용하여 쿼리를 실행할 수 있습니다.

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이 쿼리를 실행 한 열을 찾고 있습니다.


2
아니요, SQL Server는 기본 추적으로 캡처 된 일부 DML / DDL을 제외하고 쿼리를 실행하는 사용자를 추적하지 않습니다.
Aaron Bertrand

답변:


27

서버 측 추적을 만들거나 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

@kin +1이 유용한 스크립트를 공유해 주셔서 감사합니다. 그것은 이것에 어떻게 든 비슷한입니다 dba.stackexchange.com/questions/135140/...
마르첼로 Miorelli

1
@marcellomiorelli yeh .. 스크립트는 귀하의 질문을 해결하는 데 사용될 수 있지만 여전히 서버 측 추적 또는 SQLAduit로 갈 것입니다. 그렇게하면 데이터가 DMV에서 플러시되는 것에 대해 걱정할 필요가 없습니다.
Kin Shah

sdest.Query로 필터링 하는 방법 은 무엇 입니까?
Kiquenet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.