Я не могу изменить соединение с сервером, используя SQLCMD в SSMS - PullRequest
0 голосов
/ 29 октября 2019

Я хочу легко / быстро изменить соединение с сервером (много раз) внутри скрипта

Затем я включаю режим SQLCMD и добавляю следующее:

:CONNECT MYSERVER -U myUser -P myPassword
USE [NewDatabase]
GO

Но когда я выполняюВ этом запросе я получаю следующий вывод:

Подключение к MYSERVER как MYUSER ...

Отключение подключения от MYSERVER как MYUSER ...

Чтоя делаю не так?

1 Ответ

1 голос
/ 29 октября 2019

Многие из возможных ответов основаны на том, как выглядит остальная часть запроса. Я подозреваю, что это неправильное использование разделителя пакетов GO. Если GO отсутствует, и вы подключаетесь к различным серверам в сценарии, все запросы переходят к последнему соединению, указанному в сценарии.

В этом случае использование вами GO, особенно если в скрипте есть другие команды CONNECT, вероятно, приведет к тому, что секция скрипта будет запущена для другого соединения. Обратите внимание, что я не мог решить, действительно ли GO в пакете отключает скрипт, поэтому я запустил тест. Нет, GO не просто отключает скрипт от соединения. Однако, если у вас есть другой оператор CONNECT перед следующим GO, промежуточные команды выполняются в последнем CONNECT, выполненном перед следующим GO, или в конце сценария, в зависимости от того, что наступит раньше.

Это сработало нормально:

:CONNECT Server1
USE MyDB

SELECT DB_Name()    -- Returned MyDB
GO
:CONNECT YourServer
Use DB13

SELECT DB_Name()    -- Returned DB13
GO

Однако это не так:

:CONNECT Server1
USE MyDB

SELECT DB_Name()    -- Returned DB13
-- No GO statement here
:CONNECT YourServer
Use DB13

SELECT DB_Name()    -- Returned DB13
GO

Поскольку вам фактически не нужен GO после оператора USE, удалите его там. Вместо этого поместите GO перед каждым оператором CONNECT.

Да, и на всякий случай - если все, что у вас есть в вашем запросе, - это то, что вы имеете в своем примере выше, вы будете получать только те сообщения, которые видите. Когда запрос заканчивается, вы отключаетесь от сервера, указанного в операторе CONNECT.

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