выберите из @variable, как использовать переменную после - PullRequest
0 голосов
/ 08 октября 2019

У меня есть запрос, который должен получить результаты из нескольких баз данных, расположенных на 2 разных серверах:

  • Я создал связанный сервер для подключения ко второму серверу.
  • Я смогЧтобы зациклить базы данных, расположенные под одним сервером, моя проблема заключается в том, что я не могу получить второй сервер, на котором расположена другая база данных "NCHKS".
  • Я попытался объявить переменную для имени сервера и вызвать ее после from in selectно я не смог разместить правильный синтаксис

Ниже приведен мой запрос:

 declare @dbname varchar(max)
 --select @dbname = '"NCHLB", "NCHDU", "NCHCY", "NCCH", "NCHOS", "NCHUK", 
--"AFRNW" , "NCAFR", "NCTRK", "NCCPI", "NCIOL", "NCDLM", "NCHOL", "NCHCL", 
--"NMISL", "NCHMP"'
select @dbname = '"NCHKS"'
declare @sql varchar(max)

declare @servername varchar(max) 
set @servername = iif (@dbname = '"NCHKS"','[SERVER2]','[SERVER1]')
--select @servername


select @sql = isnull(@sql,'') 
  + case when @sql is null then '' else ' union all ' end
  + 'SELECT  ''' + db.name + ''' as [DB Name],  [year1], [jrnentry]
          FROM  ' + @servername + '.' + db.name + '.dbo.PK_OPEN_AA_DIST A 
CROSS JOIN  ' + @servername + '.'  + db.name + '.dbo.MC40000 AS mc

          Union ALL

          SELECT ''' + db.name + ''' as [DB Name], [year1], [jrnentry]

           FROM  ' + @servername + '.' + db.name + '.dbo.PK_HIST_AA_DIST  
 A CROSS JOIN  ' + @servername + '.'  + db.name + '.dbo.MC40000 AS mc'

 from   [SERVER2].Master.sys.databases db
 where @dbname  like '%"' + db.name + '"%'

select @sql = '
Select  [DB Name],  JRNENTRY
                       from (' + @sql + ') as AllData

                       order by YEAR1, JRNENTRY'

 execute (@sql)

Я не могу заменить SERVER2 или SERVER1 в приведенном ниже синтаксисе. для переменной SERERNAME

from   [SERVER2].Master.sys.databases db

она должна выглядеть примерно так:

from @servername.Master.sys.databases db

где @servername - объявленная переменная имени сервера, основанная на имени базы данных, оцените вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...