Tuesday, May 1, 2012

Handy SQL Queries used by DBA's













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_count0AS AvgElapsedTime,
ISNULL(s.execution_count DATEDIFF(ss.creation_timeGETDATE()), 0AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_texts.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.

GOSELECT OBJECT_NAME(OBJECT_IDTableNamest.row_count
FROM sys.dm_db_partition_stats st
WHERE index_id 2
ORDER BY st.row_count DESC
GO


  Finding the Running Queries in Server:

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


 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