2016-10-13 8 views
0

私は多くの同一のデータベースを持っており、同じテーブルに特定のエントリを持つすべてのデータベースを探したいと思います。すべてのデータベースの特定のテーブルを同時に検索する

これは私が必要とする情報を取得するために、各databse agains実行しなければならないものである:

select OrderID, OrderRef 
from Orders 
where OrderID = '12345' 

私はサポートされていないsp_MSforeachdbを使用して、すべてのdatabsesに対する私のクエリを実行できることを考えたが、私はに絶望的ではありませんよこの特定の方法を使用してください。

Column name or number of supplied values does not match table definition.

さらに、それは結果がから来ているデータベースは表示されません:

CREATE TABLE ##tmpTable(OrderID VARCHAR(MAX), OrderRef VARCHAR(MAX)); 

DECLARE @command varchar(1000) 

SELECT 
    @command = 'Use ? INSERT INTO ##tmpTable SELECT ''[?]'', OrderID, OrderRef FROM Orders WHERE OrderID = ''12345'';' 
EXEC sp_MSforeachdb @command 

SELECT * FROM ##tmpTable; 
GO 

DROP TABLE ##tmpTable; 

それは私が次のエラーを取得していているように私はそれを実行

。私は何を取得したいと思いことはこれです:あなたのコメントのおかげで

DatabaseName | OrderID | OrderRef 
+0

あなたが仕事をdoesntの意味は何?仕事のために名前のチェックが必要なのでhttp://stackoverflow.com/questions/3808338/need-to-capture-database-name-when-error-occurs-with-sp-msforeachdb –

+0

私にはそれは期待通りに働いたからです。 –

+0

私の質問は、どの部分がうまくいかないかを説明するために更新されました。 – QWE

答えて

0

私は私のクエリを変更することができましたし、それが動作するようになりました:

CREATE TABLE ##tmpTable(DB_Name VARCHAR(MAX), OrderID VARCHAR(MAX), OrderRef VARCHAR(MAX)); 

DECLARE @command varchar(1000) 
SELECT @command = 'Use ? INSERT INTO ##tmpTable select ''?'', OrderID, OrderRef from Orders WHERE OrderID = ''12345'' 
;' 
EXEC sp_MSforeachdb @command 

SELECT * FROM ##tmpTable; 
GO 
DROP TABLE ##tmpTable; 
関連する問題