Почему токены SQL Server 2012 не расширяются при использовании в заданиях агента?

Я пытаюсь использовать токены в моих заданиях агента 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: \ Backup.bak

Если вокруг имени используются квадратные скобки, результатом будет ошибка, в основном говоря, что имя не может быть пустым. Таким образом, значение токена рассматривается как пустая строка.

Если я на этом шаге поменяю токен на (ДАТА), он будет работать как положено, и будет создана резервная копия с именем, являющимся текущей датой.

D: \ Backup \ 20160821.bak

Установлен флажок Заменить токены для всех откликов заданий на оповещения.

Я потратил несколько часов на поиски объяснения этому конкретному поведению, но не могу найти ничего подходящего.

ОС - это Сервер 2008R2. Версия SQL Server 11.0.3128.0

1 ответ

Решение

Поздний ответ, я знаю, но токены с префиксом A будут расширяться, только если шаг задания активирован предупреждением SQL Server или событием WMI.

Другие вопросы по тегам