cara mendapatkan Riwayat kueri yang dijalankan dengan nama pengguna dalam SQL

11

Saya dapat menjalankan kueri dengan menggunakan:

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

tapi saya juga mencari usernamekolom, yang mengeksekusi pertanyaan ini.

Hazell B
sumber
2
Tidak, SQL Server tidak melacak pengguna yang menjalankan kueri, kecuali untuk beberapa DML / DDL yang ditangkap oleh jejak default.
Aaron Bertrand

Jawaban:

27

Saya menyarankan Anda untuk membuat jejak sisi server atau mengaktifkan SQL Audit untuk melacak aktivitas dari pengguna yang tidak Anda percayai.

Ingat bahwa data DMV akan direset jika DMV dihapus, sql server dihidupkan ulang, dll.

Yang paling dekat yang Anda dapatkan menggunakan kueri di bawah ini:

/******************************************************
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 Shah
sumber
@kin +1 terima kasih telah berbagi skrip yang sangat berguna ini. entah bagaimana mirip dengan yang satu ini dba.stackexchange.com/questions/135140/…
Marcello Miorelli
1
@marcellomiorelli yeh .. skrip dapat digunakan untuk menjawab pertanyaan Anda, tapi saya masih akan mencari jejak sisi server atau SQLAduit. Dengan begitu, Anda tidak perlu khawatir tentang data yang keluar dari DMV.
Kin Shah
Bagaimana memfilter menurut sdest.Query ?
Kiquenet