Advertisement
wolney

sp_who4

Aug 22nd, 2019
554
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.10 KB | None | 0 0
  1. CREATE view vWho4
  2. --with execute as 'usrspwho'
  3. as
  4. with cteWho4 as (
  5. select s.session_id as nSessionID,
  6. r.session_id as nSessionReqID,
  7. s.login_name as cLoginName ,
  8. s.login_time as dLogin,
  9. s.host_name as cHostName ,
  10. c.client_net_address as cIPClient,
  11. s.program_name as cProgramName ,
  12. r.start_time as dStartExec ,
  13. s.status as cStatus ,
  14. r.command as cCommandType ,
  15. DB_NAME(r.database_id) as cDBName ,
  16. r.blocking_session_id as nSessionIDBlocking ,
  17. r.wait_type as cWaitType ,
  18. dateadd(millisecond,r.wait_time,'00:00:00:000') as dWaitTime ,
  19. r.open_transaction_count as nCntOpenTransaction ,
  20. --cast(r.cpu_time/1000.0 as decimal(10,2)) as [nCpuTimeExec(s)] ,
  21. dateadd(millisecond,r.cpu_time,'00:00:00:000') as dCpuTimeExec ,
  22. --cast(s.cpu_time/1000.0 as decimal(10,2)) as [nCpuTimeSession(s)] ,
  23. dateadd(millisecond,s.cpu_time,'00:00:00:000') as dCpuTimeSession ,
  24. --cast(r.total_elapsed_time/1000.0 as decimal(10,2)) as [nTotalElapsedTime(s)] ,
  25. dateadd(millisecond,r.total_elapsed_time,'00:00:00:000') as dTotalElapsedTime,
  26. r.reads as nReadExec,
  27. s.reads as nReadSession,
  28. r.writes as nWriteExec ,
  29. r.writes as nWriteSession ,
  30. r.logical_reads as nLogicalReadsExec ,
  31. s.logical_reads as nLogicalReadsSession ,
  32. cast(s.memory_usage*8/1024.0 as decimal(10,2)) as [nMemoryUsage(mb)],
  33. r.row_count as nCntRowExec ,
  34. s.row_count as nCntRowSession ,
  35. r.percent_complete as nPercentComplete ,
  36. s.transaction_isolation_level as nTransactionIsolationLevel,
  37. c.net_transport as cNetTransport,
  38. s.client_version as cClienteVersion,
  39. m.dop as nDOP,
  40. m.request_time as dRequestTime,
  41. m.grant_time as dGrantTime ,
  42. cast(m.requested_memory_kb /1024.0/1024.0 as numeric(10,4) ) nRequestedMemoryGB,
  43. cast(m.granted_memory_kb /1024.0/1024.0 as numeric(10,4) ) nGrantedMemoryGB,
  44. cast(m.required_memory_kb /1024.0/1024.0 as numeric(10,4) ) nRequiredMemoryGB,
  45. m.used_memory_kb as nUsedMemoryKB,
  46. m.max_used_memory_kb nMaxUsedMemoryKB,
  47. m.query_cost as nQueryCostEstimated,
  48. m.timeout_sec as nTimeoutSec ,
  49. substring(st.text,
  50. (r.statement_start_offset/2)+1,
  51. ((case when r.statement_end_offset = -1
  52. then datalength(st.text)
  53. else r.statement_end_offset
  54. end - r.statement_start_offset
  55. )/2
  56. ) + 1
  57. ) as cQuery,
  58. st.text as cObjectQuery,
  59. st.objectid nObjectID,
  60. r.sql_handle,
  61. r.plan_handle
  62. from sys.dm_exec_sessions s
  63. left join sys.dm_exec_connections c on s.session_id = c.session_id
  64. left join sys.dm_exec_requests r on c.session_id = r.session_id and c.connection_id = r.connection_id
  65. outer apply sys.dm_exec_sql_text(r.sql_handle) as st
  66. left join sys.dm_exec_query_memory_grants m on m.session_id = s.session_id
  67. where s.session_id > 0
  68. ) select nSessionID,nSessionReqID,cLoginName,dLogin,cHostName,cIPClient,cProgramName,
  69. dStartExec,cStatus,cCommandType,cDBName,nSessionIDBlocking,cWaitType,dWaitTime,
  70. nCntOpenTransaction,dCpuTimeExec,dCpuTimeSession,dTotalElapsedTime,nReadExec,
  71. nReadSession,nWriteExec,nWriteSession,nLogicalReadsExec,nLogicalReadsSession,
  72. [nMemoryUsage(mb)],nCntRowExec,nCntRowSession,nPercentComplete,
  73. nTransactionIsolationLevel,cNetTransport,cClienteVersion,
  74. nDOP, dRequestTime,dGrantTime,nRequestedMemoryGB,nGrantedMemoryGB,nRequiredMemoryGB,nUsedMemoryKB,
  75. nMaxUsedMemoryKB,nQueryCostEstimated,nTimeoutSec , cQuery,cObjectQuery,nObjectID , sql_handle , plan_handle
  76. from cteWho4
  77. where nSessionReqID is not null
  78. or nSessionID in (select distinct nSessionIDBlocking
  79. from cteWho4
  80. where nSessionIDBlocking > 0)
  81.  
  82. go
  83. sp_ms_marksystemobject 'vWho4'
  84. go
  85.  
  86. CREATE Procedure dbo.sp_who4
  87. @id int = null
  88. --with execute as 'usrspwho'
  89. --with encryption
  90. as
  91. begin
  92.  
  93. set transaction isolation level read uncommitted ;
  94. set nocount on
  95.  
  96. declare @isadmin int = 0
  97. declare @dDateRef datetime = '1900-01-01 00:00:00.00'
  98. declare @iIDExecution bigint = cast(cast(GETDATE() as decimal(14,8) )*100000000 as bigint)
  99.  
  100. if is_srvrolemember('sysadmin') = 1
  101. set @isadmin = 1
  102. /*
  103. drop table DBAMonitor.dbo.tMOVExecutionSP_WHO4
  104. */
  105. ;
  106. with cteSPWho as (
  107. select * from master.dbo.vWho4 s
  108. where s.nSessionID <> @@SPID
  109. and (s.nSessionID = @id or @id is null)
  110. and (IS_SRVROLEMEMBER('sysadmin',s.cLoginName) = 0 or @isadmin = 1)
  111.  
  112. ) /*insert into dbamonitor.dbo.tMOVExecutionSP_WHO4(
  113. iIDExecution,nSessionID, cLoginName, dLogin, tLogin, cHostName, cIPClient, cProgramName, dStartExec, tExec, cStatus, cCommandType, cDBName, nSessionIDBlocking, cWaitType, tWait, nCntOpenTransaction, tCpuExec, tCpuSession, tTotalElapsed, nReadExec,
  114. nReadSession, nWriteExec, nWriteSession, nLogicalReadsExec, nLogicalReadsSession, [nMemoryUsage(mb)], nCntRowExec, nCntRowSession, nPercentComplete, transaction_isolation_level, cNetTransport, cQuery, cObjectQuery, nObjectID, cClienteVersion
  115. )*/
  116. select @iIDExecution ,
  117. nSessionID,
  118. cLoginName,
  119. dLogin,
  120. case when DATEDIFF(HH,dLogin, GETDATE()) < 24
  121. then cast(cast(GETDATE()-dLogin as time) as varchar(12))
  122. else cast(DATEDIFF(DAY,dLogin, GETDATE()) as varchar(2))+'d '+cast(cast(GETDATE()-dLogin as time) as varchar(8))
  123. end as tLogin,
  124. cHostName,
  125. cIPClient,
  126. cProgramName,
  127. dStartExec,
  128. case when DATEDIFF(HH,dStartExec, GETDATE()) < 24
  129. then cast(cast(GETDATE()-dStartExec as time) as varchar(12))
  130. else cast(DATEDIFF(DAY,dStartExec, GETDATE()) as varchar(2))+'d '+cast(cast(GETDATE()-dStartExec as time) as varchar(8))
  131. end as tExec,
  132. cStatus,
  133. cCommandType,
  134. cDBName,
  135. nSessionIDBlocking,
  136. cWaitType,
  137. --nWaitTime,
  138. case when DATEDIFF(HH,dWaitTime, @dDateRef ) < 24
  139. then cast(cast(dWaitTime-@dDateRef as time) as varchar(12))
  140. else cast(DATEDIFF(DAY,dWaitTime , @dDateRef ) as varchar(2))+'d '+cast(cast(dWaitTime-@dDateRef as time) as varchar(8))
  141. end as tWait,
  142. nCntOpenTransaction,
  143. --dCpuTimeExec,
  144. case when DATEDIFF(HH,dCpuTimeExec, @dDateRef ) < 24
  145. then cast(cast(dCpuTimeExec -@dDateRef as time) as varchar(12))
  146. else cast(DATEDIFF(DAY,dCpuTimeExec , @dDateRef ) as varchar(2))+'d '+cast(cast(dCpuTimeExec -@dDateRef as time) as varchar(8))
  147. end as tCpuExec,
  148. case when DATEDIFF(HH,dCpuTimeSession, @dDateRef ) < 24
  149. then cast(cast(dCpuTimeSession-@dDateRef as time) as varchar(12))
  150. else cast(DATEDIFF(DAY,dCpuTimeSession, @dDateRef ) as varchar(2))+'d '+cast(cast(dCpuTimeSession-@dDateRef as time) as varchar(8))
  151. end as tCpuSession,
  152. --dTotalElapsedTime,
  153. case when DATEDIFF(HH,dTotalElapsedTime, @dDateRef ) < 24
  154. then cast(cast(dTotalElapsedTime-@dDateRef as time) as varchar(8))
  155. else cast(DATEDIFF(DAY,dTotalElapsedTime, @dDateRef) as varchar(2))+'d '+cast(cast(dTotalElapsedTime-@dDateRef as time) as varchar(8))
  156. end as tTotalElapsed,
  157. nReadExec,
  158. nReadSession,
  159. nWriteExec,
  160. nWriteSession,
  161. nLogicalReadsExec,
  162. nLogicalReadsSession,
  163. [nMemoryUsage(mb)],
  164. nCntRowExec,
  165. nCntRowSession,
  166. nPercentComplete,
  167. nTransactionIsolationLevel,
  168. cNetTransport,
  169. cQuery,
  170. cObjectQuery,
  171. nObjectID,
  172. cClienteVersion,
  173. nDOP,
  174. dRequestTime,
  175. dGrantTime,
  176. nRequestedMemoryGB,
  177. nGrantedMemoryGB,
  178. nRequiredMemoryGB,
  179. nUsedMemoryKB,
  180. nMaxUsedMemoryKB,
  181. nQueryCostEstimated,
  182. nTimeoutSec
  183. from cteSPWho
  184. /*
  185. select nSessionID, cLoginName, dLogin, tLogin, cHostName, cIPClient, cProgramName,
  186. dStartExec, tExec, cStatus, cCommandType, cDBName, nSessionIDBlocking,
  187. cWaitType, tWait, nCntOpenTransaction, tCpuExec, tCpuSession, tTotalElapsed,
  188. nReadExec, nReadSession, nWriteExec, nWriteSession, nLogicalReadsExec,
  189. nLogicalReadsSession, [nMemoryUsage(mb)], nCntRowExec, nCntRowSession,
  190. nPercentComplete, transaction_isolation_level, cNetTransport,
  191. cQuery, cObjectQuery, nObjectID, cClienteVersion
  192. from DBAMonitor.dbo.tMOVExecutionSP_WHO4
  193. where iIDExecution = @iIDExecution
  194. order by nSessionID
  195. */
  196. end
  197.  
  198.  
  199. go
  200. sp_ms_marksystemobject 'sp_who4'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement