我正在尝试在 SQL Server 代理作业中使用令牌如这里所述,但有些令牌并未按我预期发挥作用。
运行代理作业时,原本应该扩展以提供数据库名称、服务器名称等信息的令牌未扩展。令牌扩展的结果是一个空字符串,而不是所需的值。
下面是一个简单的例子来演示这个问题。
一个名为“备份”的简单作业有一个名为“创建备份”的 T-SQL 步骤,它使用数据库 MyDatabaseName
BACKUP
DATABASE
MyDatabaseName
TO
DISK = N'D:\Backup\"$(ESCAPE_NONE(A-DBN))".bak'
令牌 $(ESCAPE_NONE(A-DBN)) 应该扩展为当前数据库的名称,因此我希望这项作业生成一个与数据库同名的备份文件,如下所示:
D:\Backup\我的数据库名称.bak
实际结果是创建一个没有名称的备份,如下所示:
备份文件.bak
如果名称周围使用方括号,则结果将是一个错误,基本上表明名称不能为空。因此,令牌的值被视为空字符串。
如果我在此步骤中将令牌更改为(DATE),那么它将按预期工作,并且会创建一个以当前日期为名称的备份。
D:\Backup\20160821.bak
已选中“为所有作业响应警报替换令牌”框。
我花了几个小时寻找这种特定行为的解释,但没有找到任何相关内容。
操作系统是 Server 2008R2。SQL Server 版本是 11.0.3128.0
答案1
我知道回复晚了,但是以 A- 为前缀的标记只有在作业步骤由 SQL Server 警报或 WMI 事件激活时才会扩展。