указать сервер в сценарии sql - PullRequest
14 голосов
/ 13 декабря 2011

Я пишу сценарий SQL для SQL Server 2008, где я помещаю в начале оператор использования, в котором указывается база данных, с которой должен запускаться сценарий:

use [my_database]

Поскольку у меня разные среды, где одинаковыебаза данных существует, например, dev, qa, prod, есть ли способ указать в сценарии среду, для которой предназначен сценарий, либо по имени сервера или по IP-адресу, либо по любому другому механизму.

Ответы [ 3 ]

25 голосов
/ 14 декабря 2011

Вы можете перевести SQL Management Studio в режим SQLCMD и указать сервер с помощью оператора :CONNECT myserver.

Вы можете включить командный режим, нажав на опцию на картинке ниже enter image description here

Ваш сценарий будет выглядеть примерно так

    :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 .

.
1 голос
/ 13 декабря 2011

Это настройка СОЕДИНЕНИЕ , а не параметр в скрипте.

При желании вы можете запустить один и тот же сценарий в разных средах с помощью пакетного файла или сценария powershell, или вы можете настроить связанные серверы, но вы не можете просто сказать

USE SomeOtherServer

Существуют также последствия для безопасности и сетей.

0 голосов
/ 14 декабря 2011

Если вы запустите все эти сценарии на определенном сервере - например, на сервере Dev - тогда вам просто нужно создать связанный сервер с каждым из других серверов.

Тогда, например, вы можетезапустите хранимую процедуру с одинаковым именем на каждом из этих серверов следующим образом:

EXEC MyDatabase.dbo.mysp_DoSomething --Dev Server; no server prefix needed since that's where we are
EXEC QA.MyDatabase.dbo.mysp_DoSomething --QA Server
EXEC Prod.MyDatabase.dbo.mysp_DoSomething --Prod server

и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...