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