2012-07-06 76 views
-1

经过一些搜索后,我无法找到涵盖我的问题的好答案。 我正在合并大约100个数据库。结构是一样的,它们都在同一台服务器上。所有的数据库都有一个包含登录信息的表格。从多个数据库中的数据创建视图

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

任何意见或建议,欢迎

回答

2

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

DECLARE @sql varchar(max), @Database1 varchar(300) 
set @Database1 = 'tempdb' 
SET @sql=' 
USE '[email protected]+'; 
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

要引用到你的表中的第二个数据库使用这样的:。 [数据库] [DBO] [表名] 例如

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

注意:这将在同一台服务器上才会有效 - 如果你的数据库是不同的服务器上,那么你将需要创建一个链接的服务器。

+0

正确,但问题是数据库有时会被添加和删除。我不想每次手动调整视图。所以我需要一些for循环来遍历每个数据库并选择数据。 – 2012-07-06 05:17:34

+0

@JanVanLooveren如果数据库被删除,如何从特定表中取出数据(删除数据库的表)? – hims056 2012-07-06 05:22:25

+0

如果数据库被删除,证书也从视图中删除。因此,我正在寻找创建一个可以动态的视图。 – 2012-07-06 05:52:05