【发布时间】:2014-11-03 20:34:15
【问题描述】:
假设下面是我的查询。
DECLARE @INT INT
SET @INT = (SELECT COUNT(1) FROM MyTable)
IF (@INT = 0)
RAISERROR('Fail',16,1)
我想使用此查询并使用“操作系统 (CmdExec)”类型创建 SQL Server 作业。 如果@INT 0,我希望SQL Job 步骤成功,如果@INT = 0,则失败。
如何编写cmd?
我的尝试(但它不起作用)...服务器与我将设置作业的位置不同。
sqlcmd -S 123.45.67.890 -E -V15 -d MyDB -Q "DECLARE @INT INT
SET @INT = (SELECT COUNT(1) FROM MyTable)
IF (@INT = 0)
RAISERROR('Fail',16,1)" -b
作业失败消息。
以用户身份执行:LocalSVR\USER。消息 105,级别 15,状态 1,服务器 RemoteSVR,第 1 行字符串 'DECLARE @INT INT' 后面的非闭合引号。处理退出代码 15。该步骤失败。
请注意,当 MyTable 有 1+ 条记录时,该步骤会因同样的原因而失败。
更新:根据 Scott 的建议,我更改了格式(删除了换行符),它似乎有效。 @Scott,不确定如何将您的评论标记为答案。如果您可以写回复,我会将其标记为答案。干杯!!!
【问题讨论】:
-
这正是你工作中的格式吗? Sqlcmd 可能不喜欢让您的查询跨越多行。如果您删除换行符,它可能会起作用。
-
嗯...哇!!认为这是它..lol 感谢@ScottTeibert 这个提示。干杯!
标签: sql sql-server tsql sql-server-2012 sqlcmd