2012-07-06 83 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