-1

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

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

欢迎任何想法或建议

4

3 回答 3

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)

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

于 2012-07-06T06:26:04.173 回答
1

要引用第二个数据库中的表,请使用:[DBName].[dbo].[TableName] 例如

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

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

于 2012-07-06T04:51:14.397 回答
0

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

于 2012-07-06T15:10:58.943 回答