各位大大好:
我Google了一段查詢MS-SQL Accesslog 語法, 但少了
SessionID, LoginTime, HostName,ProgramName,LoginName ,SessionStatus (同sys.dm_exec_sessions) 的訊息, 請教各位大大幫忙一下, 謝謝.
--傳回執行的 SQL 查詢歷史 Log
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
((CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,plan_generation_num,last_execution_time,
total_worker_time,last_worker_time,min_worker_time,
max_worker_time,total_physical_reads,last_physical_reads,
min_physical_reads,max_physical_reads,total_logical_writes,
last_logical_writes,min_logical_writes,max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
and S2.text like '%CDD.%'
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;
-- 查詢目前連線數明細 -- exp2 有最近SQL
SELECT s.session_id AS SessionID,
s.login_time AS LoginTime,
s.[host_name] AS HostName,
s.[program_name] AS ProgramName,
s.login_name AS LoginName,
s.[status] AS SessionStatus,
st.[text] AS SQLText,
(s.cpu_time / 1000) AS CPUTimeInSec,
(s.memory_usage * 8) AS MemoryUsageKB,
(CAST(s.total_scheduled_time AS FLOAT) / 1000) AS TotalScheduledTimeInSec,
(CAST(s.total_elapsed_time AS FLOAT) / 1000) AS ElapsedTimeInSec,
s.reads AS ReadsThisSession,
s.writes AS WritesThisSession,
s.logical_reads AS LogicalReads,
CASE s.transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncommitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot'
END AS TransactionIsolationLevel,
s.row_count AS RowsReturnedSoFar,
c.net_transport AS ConnectionProtocol,
c.num_reads AS PacketReadsThisConnection,
c.num_writes AS PacketWritesThisConnection,
c.client_net_address AS RemoteHostIP,
c.local_net_address AS LocalConnectionIP
FROM sys.dm_exec_sessions s INNER JOIN sys.dm_exec_connections c
ON s.session_id = c.session_id
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) AS st
WHERE s.is_user_process = 1
ORDER BY s.cpu_time DESC