我试图在我的SQL Server代理作业中使用令牌, 如下所述 ,但是某些令牌不能按照我的预期工作。
在运行代理作业时,应扩展以提供诸如数据库名称,服务器名称等信息的令牌不会扩展。 令牌扩展的结果是一个空string,而不是所需的值。
下面是一个简单的例子来演示这个问题。
一个名为“备份”的简单作业有一个称为“创build备份”的T-SQL步骤,该步骤使用数据库MyDatabaseName
BACKUP DATABASE MyDatabaseName TO DISK = N'D:\Backup\"$(ESCAPE_NONE(A-DBN))".bak'
令牌$(ESCAPE_NONE(A-DBN))应该展开为当前数据库的名称,所以我期望这个作业生成一个与数据库同名的备份文件,如下所示:
d:\备份\ MyDatabaseName.bak
实际结果是创build一个没有名字的备份,如下所示:
d:\ Backup.bak
如果名称周围使用方括号,则结果是一个错误,基本上说名称不能为空。 所以令牌的值被看作是一个空string。
如果将此步骤中的令牌更改为(DATE),则按预期工作,并使用名称为当前date创build备份。
d:\备份\ 20160821.bak
将所有作业响应replace为警报的框被选中。
我花了几个小时寻找这个具体行为的解释,但是找不到任何相关的东西。
操作系统是Server 2008R2。 SQL Server版本是11.0.3128.0
延迟回复我知道,但是以A为前缀的标记只会在作业步由SQL Server警报或WMI事件激活时才会扩展。