Finding the 10 longest running Query in SQL Server:
This Example uses the Adventureworks database you
can run in a Newquery window with
already selected database or just give the name in use to use the specific
database.
Run
following query to find longest running query using T-SQL.
SELECT DISTINCT TOP
10
t.
TEXT
QueryName
,
s.execution_count
AS
ExecutionCount
,
s.max_elapsed_time
AS
MaxElapsedTime
,
ISNULL
(
s.total_elapsed_time
/
s.execution_count
,
0
)
AS
AvgElapsedTime
,
ISNULL
(
s.execution_count
/
DATEDIFF
(
s
,
s.creation_time
,
GETDATE
()),
0
)
AS
FrequencyPerSec
FROM
sys.dm_exec_query_stats s
CROSS
APPLY sys.dm_exec_sql_text
(
s.sql_handle
)
t
ORDER BY
s.max_elapsed_time
DESC
Note:
sys.dm_exec_query_stats is the System view in master
Database which has the query status.
Finding
the ROW COUNT in tables of a Database:
GO
SELECT
OBJECT_NAME
(
OBJECT_ID
)
TableName
,
st.row_count
FROM
sys.dm_db_partition_stats st
WHERE
index_id
<
2
ORDER BY
st.row_count
DESC
GO
SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,req.total_elapsed_time FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
CONVERT(data_type(length),expression,style)
Last Sucessfull Queries:
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
Checking for a column name in all the
tables
SELECT name FROM
sysobjects WHERE
id IN ( SELECT id FROM syscolumns WHERE name like '%Terminal%' or name like '%Merchant%' )
Check the Percentage of backup happening
SELECT A.NAME,B.TOTAL_ELAPSED_TIME/60000
AS [Running Time],B.ESTIMATED_COMPLETION_TIME/60000 AS [Remaining],B.PERCENT_COMPLETE
as [%],(SELECT TEXT FROM sys.dm_exec_sql_text(B.SQL_HANDLE))AS COMMAND FROM MASTER..SYSDATABASES A, sys.dm_exec_requests B WHERE A.DBID=B.DATABASE_ID AND B.COMMAND LIKE '%BACKUP%' order by percent_complete desc,B.TOTAL_ELAPSED_TIME/60000 desc
Finding the active sessions of a user:
The sys.dm_exec_sessions will have all the active sessions
of a user. The details like session_id,
Login time can be known from the below queries. Once the active sessions are
found they can be killed using KILL command.
SELECT
session_id
FROM
sys.dm_exec_sessions
WHERE
login_name
=
<User_name>
KILL
<session_id>
The below is the query which can be used for to see how much
time elapsed after the user was logged in.
select login_name,session_id,LOGIN_time, DATEDIFF(s,login_time,getdate())/60 as 'TimeElapsedinminutes' from
sys.dm_exec_sessions where
login_name='<any
valid Username>'
Finding The Tables count in a database
USE <DBNAME>
SELECT COUNT(*) from information_schema.tables WHERE table_type
= 'base table'
No comments:
Post a Comment