2013-05-28 107 views
0

我正在嘗試做一個有趣的查詢。我有很多數據庫,他們有一個同名的表(例如:mytable)。我想在這個表中找到一些東西,但是在服務器上搜索這個表的所有事件。在查詢多個數據庫中的多個表後查詢字段

我想:

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

此列出了服務器上的所有 'mytable的' 表。

我也用

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

我想加入這兩個查詢,但我沒能找到正確的方式來做到這一點(如果有一種方法)。

我試過case,join,inner join但是真的很難得到我想要的。

回答

0

試試這個:

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

OR(在結果數據庫名)

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 

爲了逃避'(單引號)使用 ''(兩個雙引號)

+0

它試圖得到的結果..但我得到一個錯誤 將varchar值'3E5'轉換爲數據類型int轉換失敗。 – user2107835

+0

這意味着在某些表格中,一列是「INT」,而另一列是「VARCAHR」。列出明確需要的所有列並將問題列轉換爲varchar。 – Stoleg

+0

'sp_msforeachdb'附近語法不正確時,我使用第二個代碼=/ 它沒有聲明值..但是,謝謝..我會嘗試更多的東西 – user2107835