2014-10-10 31 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