Создать представление из данных по нескольким базам данных

После некоторых поисков я не смог найти хороший ответ, который охватывает мою проблему. Я работаю над консолидацией около 100 баз данных. Структура одинакова, и все они находятся на одном сервере. Все базы данных имеют таблицу с регистрационными данными.

Мы создали базовую базу данных со всей информацией о соединениях из других баз данных. Теперь нам нужно создать представление в основной базе данных, которое содержит все учетные данные для входа из всех баз данных. Это означает, что нам нужно использовать цикл, чтобы пройти через все базы данных и выбрать имя пользователя и пароль.

Любые идеи или предложения приветствуются

3 ответа

Решение

Одним из возможных решений является создание хранимой процедуры

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)

Сделайте работу базы данных и запланируйте ее согласно вашему требованию.

Для ссылки на ваши таблицы во второй базе данных используйте это: [DBName].[Dbo].[TableName] eg

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

ПРИМЕЧАНИЕ. Это будет работать только на одном и том же сервере - если ваши базы данных находятся на разных серверах, вам нужно будет создать связанный сервер.

Взгляните на это. Может ли это быть одним из ответов на ваш вопрос? http://blog.springsource.org/2007/01/23/dynamic-datasource-routing/

Другие вопросы по тегам