Многие из возможных ответов основаны на том, как выглядит остальная часть запроса. Я подозреваю, что это неправильное использование разделителя пакетов 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.