0

興味深いクエリを実行しようとしています。多くのデータベースがあり、同じ名前のテーブルがあります (例: mytable)。このテーブルで何かを見つけたいのですが、サーバー上でこのテーブルのすべてのオカレンスを検索します。

私は試した:

sp_msforeachdb 'Select * from Sysobjects where name=''mytable'''

これにより、サーバー上のすべての「mytable」テーブルが一覧表示されます。

私も使った

select * from [table].[dbo].[mytable] where myclause

これら 2 つのクエリを結合しようとしましたが、それを行う正しい方法を見つけることができませんでした (方法がある場合)。

を試してみましたがcase、欲しいものを手に入れるのは本当に難しいです。joininner join

4

1 に答える 1

0

これを試して:

sp_msforeachdb 'insert into MyMasterDB.dbo.ResultsTable select * from [?].dbo.[MyTable] where myclause'

または (結果にデータベース名を含む)

DECLARE @SQL AS VARCHAR(MAX)
select @SQL = 'insert into MyMasterDB.dbo.ResultsTable select ? as DB_Name, col1, cast (col2 as varchar (50)), col3 from [?].dbo.[MyTable] where myclause'

sp_msforeachdb @SQL

' (一重引用符) をエスケープするには、'' (2 つの二重引用符) を使用します。

于 2013-05-28T15:02:26.027 に答える