我有许多相同的数据库,我想找到在同一个表中有特定条目的所有数据库。
这是我必须再次运行每个数据库以获取我需要的信息:
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
答案 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;