Я работаю с группой баз данных с несколькими проектами одинаковой структуры в каждой базе данных. Моя цель состоит в том, чтобы запрашивать основную базу данных на каждом сервере и извлекать одинаковую информацию из всех проектов для агрегирования и выполнения анализа. На сервере SQL я собрал рабочий запрос (пример ниже), который перебирает все проекты, возвращающие одну и ту же информацию:
Declare @DBNames Table (RN int, Name varchar(max))
Insert Into @DBNames (RN, Name)
Select Row_Number() Over (Order By Name Desc) as RN,
Name
From sys.databases
Where (Name = 'proj1' or
Name = 'proj2' or
Name = 'proj3')
and state_desc = 'Online'
-- sql part 1a
DECLARE @sql1 varchar(max) =
'
select ''a.colA
,b.colB
,c.colC
from '
-- sql2 part
Declare @SQL2 varchar(max) = '.dbo.tableA as a
inner join '
-- sql3 part
Declare @SQL3 varchar(max) = '.dbo.tableB as b on b.x = a.x
inner join '
-- sql4 part
Declare @SQL4 varchar(max) = '.dbo.tableC as c on c.y = b.y
where col1 is not null'
Declare @SQL varchar(max)
Select @SQL = (
Select Stuff((@SQL1 + Name + @SQL2 + NAME + @SQL3 + Name + @SQL4 + Case When RN = 1 Then '' Else ' Union ' End), 1, 0, '') as SQL
From @DBNames Order By RN Desc
for XML Path(''), TYPE).value('.','varchar(max)')
exec(@sql)
Когда я пытаюсь загрузить данные с помощью вышеуказанного запроса в RODB C, похоже, не работает. Поддерживает ли RODB C этот тип запроса? Если нет, что может быть хорошей альтернативой?
Заранее благодарим вас за ваше время и терпение!