Указать сервер в sql script
Я пишу sql script для SQL Server 2008, где я помещаю в начале инструкцию использования, которая указывает базу данных, с которой должен работать script:
use [my_database]
Поскольку у меня разные среды, где существует одна и та же база данных, например dev, qa, prod, я могу указать в script среде, для которой script, либо имя сервера, либо ip-адрес или любым другим механизмом.
Ответы
Ответ 1
Вы можете поместить SQL Management Studio в режим SQLCMD и указать сервер с помощью оператора :CONNECT myserver
.
Вы можете включить командный режим, нажав на опцию на рис. ниже
![enter image description here]()
Ваш script будет выглядеть примерно так:
:CONNECT devserver
use [my_database]
SELECT * FROM my_table
Вы даже можете сделать серверы окна окна запроса во время выполнения
:CONNECT devserver
use [my_database]
SELECT * FROM my_table
GO
:CONNECT uatserver
use [my_database]
SELECT * FROM my_table
Чтобы подключиться к определенному пользователю и паролю, вы можете указать это следующим образом
:CONNECT devserver -U myUser -P myPassword
use [my_database]
SELECT * FROM my_table
На самом деле существует ряд опций, которые можно указать зарегистрированный в msdn.
Ответ 2
Это параметр ПОДКЛЮЧЕНИЕ, а не параметр в script.
Вы можете запустить тот же script в разных средах с помощью командного файла или powershell script, если хотите, или вы можете настроить связанные серверы, но вы не можете просто сказать
USE SomeOtherServer
Также существуют проблемы с безопасностью и сетью.
Ответ 3
Предполагая, что вы запустите все эти сценарии на определенном сервере - например, сервер Dev - тогда вам просто нужно создать Linked Server для каждого из других серверов.
Затем, например, вы могли бы запустить хранимую процедуру с одинаковым именем на каждом из этих серверов:
EXEC MyDatabase.dbo.mysp_DoSomething --Dev Server; no server prefix needed since that where we are
EXEC QA.MyDatabase.dbo.mysp_DoSomething --QA Server
EXEC Prod.MyDatabase.dbo.mysp_DoSomething --Prod server
и др.