Как я могу передавать данные между серверами, используя t-sql и / или sqlcmd? - PullRequest
0 голосов
/ 02 февраля 2011

Я пытаюсь написать автоматический сценарий sqlcmd, который создает два идентичных имени входа на двух разных серверах.Таким образом, соответствующие шаги идут:

:connect primaryDb 

create login myuser with password='mypassword'
Go

:setvar SID sid from syslogins where name = 'myuser'

:connect secondaryDb

 create login myuser with password='mypassword', sid=$(SID)
 Go

К сожалению, скрипт завершается ошибкой на этапе: setvar SID sid из системных журналов, где name = 'myuser'.Я не могу найти правильный синтаксис, чтобы позволить setvar принять результат оператора SQL.

Есть ли синтаксис для этого?Или обходной путь, который не включает использование связанных серверов?

Cheers, Matt

1 Ответ

1 голос
/ 03 февраля 2011

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

Вы можете попытаться обойти это, используя вывод в текстовый файл и, возможно, некоторые пакетные сценарии.

Идея в основном такая. Вы делите свой запрос на две части. Первая часть получает SID и записывает его в текстовый файл (используя команду сценариев :OUT). Затем вы инициализируете сценарий var вне второй части (и, конечно, до его выполнения), запускаете вторую часть, и, надеюсь, вы там.

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