Эд уже упоминал SQLCMD, очень хороший выбор для сценариев.
Если это вам не подходит, и у вас есть права на сервер, и вы не возражаете против риска использования недокументированных функций и изменения основной базы данных, вы можете изучить пользовательские системные хранимые процедуры .
Пользовательская системная хранимая процедура (UDSSP) создается в базе данных master с префиксом «sp_» и помечается как системный объект с недокументированным системным proc sp_MS_marksystemobject (SQL2005).
Он берет свой контекст базы данных из текущего соединения или трехчастное имя, если оно так называется.
Пример вызова:
declare @db sysname
declare @sql nvarchar(max)
set @db = 'yourdatabase'
set @sql = 'exec '+quotename(@db)+'..sp_@yourproc'
exec (@sql)
Примечания:
Если вы пойдете по этому пути, я настоятельно рекомендую использовать уникальный префикс, который сортирует по верху, например sp_ @ yourproc, а не sp_yourproc, чтобы вы могли найти их снова позже, и другие люди знают, что они являются чем-то специальный.
Как только процедура помечена как системная, она не может быть обновлена. Чтобы внести изменения, вы должны удалить, воссоздать и отметить как системный.
Не делайте этого, если вы не знаете, что делаете, и не проделали больше исследований. Не делайте этого, если вы склонны к риску. Не делайте этого, если у вас нет экземпляра разработки для тестирования вначале.
Резервное копирование UDSSP в файл или CSV. Обновление сервера может уничтожить их.