0

SELECT特定のデータベースに対してのみステートメントを実行したいと考えています。データベースのリストは、次のクエリによって返されます。

DECLARE @OneWeekAgo DATETIME
SELECT @OneWeekAgo = DATEADD(week,-1,GETDATE())

select distinct DB_NAME(database_id) DatabaseName 
into #temp
from sys.dm_db_index_usage_stats
where DB_NAME(database_id) like 'TTT[_][a-z]%'
  and DB_NAME(database_id) not like '%test%' 
  and last_user_update > @OneWeekAgo

返されたこれらすべてのデータベースで、簡単なクエリを実行したいと思います。

SELECT * 
FROM TTT_Clients 
WHERE country like 'SWEDEN'

それ、どうやったら出来るの?次のようなものを使用して、「IN (SELECT DISTINCT...)」行でエラーが発生します。

exec sp_msforeachdb ' use [?] IF  ''?'' in (select distinct DB_NAME(database_id) DatabaseName 
                                            from sys.dm_db_index_usage_stats
                                            where DB_NAME(database_id) like  ''TTT[_][a-z]%'' 
                                              and DB_NAME(database_id) not like ''%test%'') 
BEGIN
    SELECT * FROM TTT_Clients WHERE country like ''SWEDEN''
END
4

1 に答える 1