Handy T-SQL Queries

Finding the 10 longest running Query in SQL Server:

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:

 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.

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_requestsWHERE 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