У меня есть один SQL-запрос, который мне нужно запустить против ~ 25 разных баз данных, каждый из которых находится на отдельном SQL-сервере в сети. Запрос будет запускаться из одной центральной студии управления SQL-сервером, а 24 других экземпляра SQL-сервера связаны. У меня есть запрос, который мне нужен, и я тестировал его, но цель состоит в том, чтобы создать скрипт, который запрашивает каждый из 25 отдельных экземпляров SQL.Простой одиночный запрос SQL для нескольких связанных SQL-серверов/БД
Вместо того чтобы писать запрос из 25 отдельных раз в сценарии, мне интересно, есть ли способ использовать один блок кода для запроса каждого связанного экземпляра с использованием массива, переменных, DO/WHILE, функции или любого другого метода.
Вот запрос:
SET NOCOUNT ON
PRINT 'local server';
SELECT isc.ini_schema_name[Device], count(*) [Count]
FROM pharos.dbo.edi_pharos_stations eps, pharos.dbo.ini_schemas isc
WHERE eps.ini_schema_id = isc.ini_schema_id
GROUP BY isc.ini_schema_id, isc.ini_schema_name
Для этого примера, если бы я был использовать менее изящный подход выписывать блок кода 24 более раз, это будет следующий запрос в сценарий (для запроса SQL-сервера с именем pharos90-2008).
PRINT 'Pharos90-2008';
SELECT isc.ini_schema_name[Device], count(*) [Count]
FROM [pharos90-2008].pharos.dbo.edi_pharos_stations eps, [pharos90-2008].pharos.dbo.ini_schemas isc
WHERE eps.ini_schema_id = isc.ini_schema_id
GROUP BY isc.ini_schema_id, isc.ini_schema_name
Как вы можете видеть, запрос/код точно так же, за исключением того, что она ссылающаяся на отдельный связанный SQL Server (запрос запускается с центральным управлением SQL Server Studio), за исключением.
Конечной целью является вывод запрошенных данных для каждого экземпляра SQL в один .txt-файл; формат, напечатать имя каждого конкретного SQL-сервера, за которым следуют соответствующие запрошенные данные.
Любые советы относительно того, как можно выполнить такую задачу?
Заранее спасибо.
Это один ** запрос ** (не * querie *) и два или более ** запросов ** .... –
Это был долгий день ... у вас есть полезное предложение для меня? – Matt
Используйте режим SQLCMD и переменную для подключения к серверу. Фактически подключитесь к каждому из экземпляров, а не используйте связанный сервер, запустите запрос и подключитесь к следующему. – Rory