在所有数据库中同时查找特定表中的特定列

时间:2016-10-13 15:35:15

标签: sql-server tsql

我有许多相同的数据库,我想找到在同一个表中有特定条目的所有数据库。

这是我必须再次运行每个数据库以获取我需要的信息:

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

我认为我可以使用不受支持的sp_MSforeachdb对所有数据库运行查询,但我并不急于使用这种特殊方法。

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

1 个答案:

答案 0 :(得分: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;
相关问题