从sp_MSForEachTable加入查询

时间:2014-10-10 02:26:39

标签: sql-server sql-server-2008 sp-msforeachtable

我使用以下查询来获取用户上次更新表格的时间:

EXEC sp_MSForEachTable 'SELECT ''?'' as TableName, 
                                  last_user_update,
                                  user_updates,
                                  index_id
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID(''SP3D_DB_RESEARCH_MDB'') AND 
                    OBJECT_ID = OBJECT_ID(''?'')' 

但是在结果窗口中,我会得到一个表格,每个结果都有一行。有没有办法将它们作为一个独特的查询加入,以便我可以对结果进行排序?

我使用的是SQL Server 2008 R2和Microsoft SQL Server Management Studio。

1 个答案:

答案 0 :(得分:2)

您不能JOIN使用该过程,但是您可以将结果放入一个(临时)表(变量)中,您可以使用INSERT INTO在第二步中将其用于连接EXEC。 e.g。

Declare @Collect Table (Name Varchar(100),cnt integer)
Insert into @Collect
EXEC sp_MSForEachTable 'SELECT ''?'' as TableName,Count(*) from ?' 
Select * from @Collect