2014-10-10 5 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 INTO с EXEC. например

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

Пробовал ваш код, но он возвращает пустые результаты. – RBasniak

+1

@RBasniak testet на SQLServer 2005 и SQLServer 2008 работает даже скрипка http://sqlfiddle.com/#!3/a5e25/1 – bummi

+0

Работала сейчас, я сменил SELECT на конкретную базу данных, и она сработала. благодаря – RBasniak

Смежные вопросы