我正在尝试编写一个自动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
不幸的是,脚本在步骤失败:来自syslogins的setvar SID sid,其中name ='myuser'。我似乎无法找到一个有效的语法来允许setvar接受SQL语句的结果。
这是否有语法?或者不涉及使用链接服务器的解决方法?
干杯, 马特
答案 0 :(得分:1)
MSDN没有给出如何做这样的事情的任何例子,从我在那里读到的,我假设没有标准的方法来初始化脚本变量与你在查询中获得的一些数据。
你可能会尝试解决这个问题,使用输出到文本文件,并可能在整个过程中使用一些批处理脚本。
这个想法基本上就是这样。您将查询分为两部分。第一部分获取SID并将其写入文本文件(使用:OUT
脚本命令)。然后你在第二部分之外初始化脚本var(当然,在执行它之前),运行第二部分,你希望在那里。