Указать сервер в 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

и др.