Почему токены 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.