从多个数据库中的数据创建视图

时间:2012-07-06 04:03:40

标签: sql database tsql consolidation

经过一番搜索,我无法找到一个涵盖我的问题的好答案。 我正在整合大约100个数据库。结构是相同的,它们都在同一台服务器上。所有数据库都有一个包含登录信息的表。

我们已经创建了一个核心数据库,其中包含来自其他数据库的所有连接信息。 现在,我们需要在核心数据库中创建一个包含所有数据库的所有登录凭据的视图。 这意味着我们需要使用循环来遍历所有数据库并选择用户名和密码。

欢迎任何想法或建议

3 个答案:

答案 0 :(得分:2)

一种可能的解决方案是创建存储过程

DECLARE @sql varchar(max), @Database1 varchar(300)
set @Database1 = 'tempdb'
SET @sql=' 
USE '+@Database1+'; 
IF EXISTS (SELECT 1 FROM SYS.VIEWS WHERE NAME =''test_view'')
BEGIN
DROP VIEW test_view
PRINT ''VIEW EXISTS''
END'
PRINT @sql
EXEC(@sql)    


declare @sql1 varchar(max)

// Modify below query as per your requirement its just for an idea

select @sql1 = IsNull(@sql1 + 'union all ','') +
              'select * from ' + name + '.dbo.tblUser'
from   sys.databases
where  name like 'DbNamePrefix%'

set @sql1 = 'create view dbo.YourView as ' + @sql1
exec (@sql1)

创建数据库作业并根据您的要求安排它。

答案 1 :(得分:1)

要在第二个数据库中引用您的表,请使用以下命令: [数据库名]。[DBO]。[表名] e.g。

CREATE VIEW [dbo].[ViewName]
as
select 
a.ID, 
a.Name, 
b.Address
from TableA a
join SecondDBName.dbo.Table b
on ... ---Remaining code here...

注意:这仅适用于同一台服务器 - 如果您的数据库位于不同的服务器上,则需要创建链接服务器。

答案 2 :(得分:0)

看看这个。这可以是你问题的答案之一吗? http://blog.springsource.org/2007/01/23/dynamic-datasource-routing/