sys.dm_exec_query_memory_grants DMV (Dynamic Management View), described by BOL as follows : http://msdn.microsoft.com/en-IN/library/ms365393.aspx
Returns information about the queries that have acquired a memory grant or that still require a memory grant to execute. Queries that do not have to wait on a memory grant will not appear in this view.
This DMV helps in finding queries that are waiting (or recently had to wait) for a memory grant. This particular DMV works with SQL Server 2005, 2008, and 2008 R2. There were some new columns added for SQL Server 2008 and above.
You should periodically run this query multiple times in regular intervals and need to look for rows returned each time. If you do see a lot of rows returned each time, then it could be an indication of internal memory pressure. It will help you to identify queries that are requesting relatively large memory grants, perhaps because they are poorly written or they’re missing indexes that make the query more expensive.
Query 1 : Details of queries required memory to execute
SELECT DB_NAME(ST.DBID) AS [DATABASENAME],
MG.REQUESTED_MEMORY_KB ,
MG.IDEAL_MEMORY_KB ,
MG.REQUEST_TIME ,
MG.GRANT_TIME ,
MG.QUERY_COST ,
MG.DOP ,
ST.[TEXT],
QP.QUERY_PLAN
FROM SYS.DM_EXEC_QUERY_MEMORY_GRANTS AS MG
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(PLAN_HANDLE) AS ST
CROSS APPLY SYS.DM_EXEC_QUERY_PLAN(MG.PLAN_HANDLE) AS QP
ORDER BY MG.REQUESTED_MEMORY_KB DESC ;
Remarks
1. User required VIEW SERVER STATE permission on the server.
If you liked this post, do like on Facebook at http://www.facebook.com/mssqlfun
Reference : Rohit Garg (http://mssqlfun.com/)
I know that MSDN says this DMV should be recognized by SQL Server 2005, but I just tested against an 2005 instance, and the DMV wasn’t recognized as valid.
Its available from SQL Server 2005 Service Pack 1 onwards.