看起来这些dm_*
表对系统来说是全局的。该语句select * from [dbname].sys.dm_exec_requests
返回服务器上所有数据库的数据。如果表包含特定于数据库的数据,那么它将包含一个database_id
字段。
如果您想将存储过程返回的数据限制在一个数据库中,那么您必须通过database_id
. 以下两个语句都适用于存储过程:
/* specify the database name manually */
declare @db_name sysname = 'master'
select *
from sys.dm_exec_requests er
inner join sys.databases d on er.database_id = d.database_id
where d.name = @db_name
/* gets the database name for the current database */
select *
from sys.dm_exec_requests er
inner join sys.databases d on er.database_id = d.database_id
where d.name = db_name()