Создать представление из данных по нескольким базам данных
После некоторых поисков я не смог найти хороший ответ, который охватывает мою проблему. Я работаю над консолидацией около 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/