[英]Query tables across multiple databases
All... I need a way to query identical tables across multiple databases. 所有......我需要一种方法来跨多个数据库查询相同的表。 I have roughly 30+ databases and they all have identical tables.
我有大约30多个数据库,他们都有相同的表。
SELECT
a.name
, a.address
, b.company_id
, c.part_no
, c.cost
FROM accounts a
JOIN business b on a.whatever = b.whatever
JOIN crazy c ON b.things = c.things
Something simple like this, but across all databases. 像这样简单,但在所有数据库中。 The focus isn't joining on multiple databases, that's simple, it's running this across all databases simultaneously.
重点不是加入多个数据库,这很简单,它同时在所有数据库中运行。 There's got to be a simpler way than creating a long drawn out stored procedure, no?
必须有一个比创建一个冗长的存储过程更简单的方法,不是吗?
CREATE PROC dbo.alldatabasequery
AS
CREATE TABLE #temp (
databasename varchar(500),
name varchar(max),
address varchar(max),
company_id varchar(max),
cost varchar(max)
)
INSERT INTO #temp
EXEC sp_MSforeachdb N'IF ''?'' NOT IN ( ''model'',''tempdb'',''master'',''msdb'')
BEGIN
SELECT databasename=''?''
, a.name
, a.address
, b.company_id
, c.part_no
, c.cost
FROM ?.dbo.accounts a
JOIN ?.dbo.business b
on a.whatever = b.whatever
JOIN ?.crazy c
ON b.things = c.things
END' ;
SELECT * FROM #temp
GO
EXEC dbo.alldatabasequery
try this one 试试这个
CREATE TABLE #temp (
databasename varchar(500),
name varchar(max),
address varchar(max),
company_id varchar(max),
cost varchar(max)
)
DECLARE @statement varchar(max)=''
declare cur cursor FOR
select name
from master.dbo.sysdatabases
where dbid >4
open cur
DECLARE @name VARCHAR(8000)
fetch next from cur into @name
while @@fetch_status = 0
begin
SET @statement='SELECT databasename='''+@name+''', a.name
, a.address
, b.company_id
, c.part_no
, c.cost
FROM '+@name+'.dbo.accounts a
JOIN '+@name+'.dbo.business b
on a.whatever = b.whatever
JOIN '+@name+'.crazy c
ON b.things = c.things'
INSERT INTO #temp
EXEC (@statement)
fetch next from cur into @name
end
close cur
deallocate cur
SELECT * FROM #temp
This article might have the solution you're looking for. 本文可能有您正在寻找的解决方案。
http://www.sqldbadiaries.com/2010/10/09/run-a-query-against-multiple-instances-using-ssms/ http://www.sqldbadiaries.com/2010/10/09/run-a-query-against-multiple-instances-using-ssms/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.