0

我正在尝试编写一个自动化的 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 from syslogins where name = 'myuser'。我似乎找不到允许 setvar 接受 SQL 语句结果的有效语法。

有没有这样的语法?或者不涉及使用链接服务器的解决方法?

干杯,马特

4

1 回答 1

1

MSDN没有给出如何做这样的事情的任何示例,并且从我在那里读到的内容中,我假设没有标准的方法来使用您在查询中获得的一些数据来初始化脚本变量。

您可能会尝试解决这个问题,使用文本文件的输出以及可能的一些批处理脚本。

思路基本是这样的。您将查询分成两部分。第一部分获取 SID 并将其写入文本文件(使用:OUT脚本命令)。然后你在第二部分之外初始化脚本变量(当然在执行它之前),运行第二部分,你希望在那里。

于 2011-02-03T09:24:16.510 回答