此外,由于这些是系统表,您需要使用具有足够访问权限的帐户登录到 SQL Server Management Studio (SSMS)。
这是查询:
SELECT
qryStats.last_execution_time AS [Time]
,qryText.TEXT AS [Query]
,DB_NAME(qryText.[dbid]) AS [Database]
,OBJECT_NAME(qryText.[objectid]) AS [TableName]
FROM sys.dm_exec_query_stats AS qryStats
CROSS APPLY sys.dm_exec_sql_text(qryStats.sql_handle) AS qryText
WHERE qryText.TEXT LIKE '%TableName%'
ORDER BY qryStats.last_execution_time DESC
运行此查询将以相反的时间顺序向您显示
针对数据库服务器上的特定表运行的 SQL。
如果您正在使用存储过程,那么您会看到 SQL Server 不会显示 EXEC 语句,而是记录了存储过程本身的 CREATE 语句。出于我们的目的,这很有用,因为它还允许我们找到对我们感兴趣的表有影响的存储过程。
有没有办法找出针对特定表运行最多的查询?