2014-10-10 27 views
0

我使用下面的查询来获取时候表被用户最后updadted:加入查询从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。

回答

2

你不能JOIN与程序,但你将能够得到的结果为一个(临时)表(变量),你可能会使用在使用INSERT INTOEXEC第二步加入。例如

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

尝试了您的代码,但它返回空结果。 – RBasniak 2014-10-10 12:20:53

+1

@RBasniak testet在SQLServer 2005和SQLServer 2008甚至小提琴工作http://sqlfiddle.com/#!3/a5e25/1 – bummi 2014-10-10 12:29:41

+0

现在工作,我改变了SELECT到一个特定的数据库,它的工作。谢谢 – RBasniak 2014-10-10 12:59:52