我在整个企业的许多 SQL 代理作业步骤中都有这个,并且它按预期工作:
sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master -Q "EXECUTE MyStoredProc etc..."
Run Code Online (Sandbox Code Playgroud)
但是在我的新 SQL Server 2016 实例上,它只会产生一个命名管道连接错误(这是一个完全的红鲱鱼)。
另一方面,这在我的新服务器上运行良好:
sqlcmd -E -S MyExplicitServerName -d master -Q "EXECUTE MyStoredProc etc..."
Run Code Online (Sandbox Code Playgroud)
为什么 SRVR 令牌不起作用?
如果我在命令提示符下启动 sqlcmd 并告诉它打印$(ESCAPE_SQUOTE(SRVR))它说:
'SRVR' scripting vaiable not defined.
Run Code Online (Sandbox Code Playgroud)
这是一个非常基本的、简单的安装,只有默认实例。