У меня есть некоторый стандартный SQL, который я запускаю для нескольких баз данных на одном сервере, чтобы помочь мне диагностировать проблемы:
select
so.name,
so.type,
MAX(case when sc.text like '%remote%' then '' ELSE 'N' END) AS Relevant,
@@ServerName as Server,
DB_Name() as DBName
from
sysobjects so with (nolock)
join syscomments sc with (nolock) on so.id = sc.id
where (sc.text like '%emote%')
group by so.name, so.type
order by so.type, so.name
Как я могу выполнить это для всех баз данных на одном сервере? (помимо ручного подключения к одному за раз и выполнения)
sql-server
Эндрю Бикертон
источник
источник
Ответы:
sp_MSForEachDB
Одним из вариантов является sp_MSForEachDB . Это недокументировано, но тем не менее полезно
У поиска в Интернете есть и много других примеров.
Примечание. Будучи неподдерживаемой функцией (в которой есть некоторые известные ошибки), вы можете написать свою собственную версию (спасибо @Pradeep)
Приведенный выше пример SQL должен быть перестроен следующим образом:
ЗАМЕТКИ:
источник
, ''?'' AS DBName
в любой оператор выбора. Согласно моему примеруПросто мои $ 0,05: SQL Multi Script (выполнение нескольких сценариев на нескольких серверах SQL).
источник
Пакет инструментов SSMS делает это красиво и бесплатно для серверов баз данных до 2012 года. Функция: «Запуск на нескольких целях» - http://www.ssmstoolspack.com/Features?f=6
источник
Существует еще один метод, который будет выдавать результаты в одном полуслитом наборе результатов. Сначала откройте Зарегистрированные серверы и создайте новую группу в разделе Группы локальных серверов, затем зарегистрируйте свой сервер один раз для каждой БД, в каждом случае устанавливая БД по умолчанию на желаемую.
После завершения щелкните правой кнопкой мыши на вашей группе и выберите Новый запрос. В открывшемся окне запроса будет «несколько», где вы обычно видите имя сервера в строке состояния. Любые запросы, запущенные в этом окне, будут работать на каждом зарегистрированном сервере, который был в группе. Первым столбцом результатов будет имя зарегистрированного сервера. Результирующий набор будет фрагментирован по первому столбцу, а порядок по воле будет действовать только внутри этого фрагмента.
Очень мощный, но упускаемый из виду функционал, когда вам обычно приходится запускать один и тот же SQL на нескольких серверах.
источник
Моя компания разработала инструмент под названием xSQL Script Executor . Это бесплатно для личного использования, и для меня, это сделало развертывание сценариев для нескольких целей очень простым.
источник
Я разработал этот инструмент: https://github.com/andreujuanc/TakoDeploy
Я все еще пишу несколько строк, но сейчас она довольно стабильна. Я использовал его против производственных баз данных и работает как шарм.
источник