Добавить дату в выходное имя файла с помощью SQLCMD из SQL Agent CmdExec?

Я хочу запускать еженедельное извлечение из базы данных SQL Server, используя SQLCMD под SQL Agent. Поскольку мне нужно сохранить несколько извлечений в одном общем ресурсе, я хочу использовать текущую дату как часть имени файла извлечения. Делая это из командной строки, я использую:

sqlcmd -S POC -i "\\org-data\data\dept\share\registry\SQLCMD\extractdata.sql" -s "|" -W -h-1 -o "\\org-data\data\dept\share\registry\Extracts\extractdata.%date:~-4,4%%date:~-10,2%%date:~-7,2%.txt"

и это работает отлично.

Когда я помещаю тот же оператор в CmdExec под агентом SQL, моя дата становится синтаксической ошибкой — («Неверный синтаксис имени файла, имени каталога или метки тома»)

Как другие справляются с этим? Спасибо.


person Corey    schedule 07.03.2015    source источник


Ответы (2)


Попробуйте использовать токены агента SQL Server. Они описаны в статье MSDN "Использование токенов в рабочих шагах". Токен DATE предоставляет текущую дату в формате ГГГГММДД. Для вашего примера используйте:

"...\Extracts\extractdata.$(ESCAPE_DQUOTE(DATE)).txt"
person Benjamin    schedule 02.04.2015
comment
Я хотел отметить, что этот пост был полезен для меня сегодня — мне нужно было сделать имя выходного файла шага задания с отметкой даты, а пример токенов агента SQL Server был быстрым решением с нулевым кодированием. Итак, я просто поместил токен в поле «Имя выходного файла» на вкладке «Дополнительно» следующим образом: C:\Users\Public\Documents\Test_$(ESCAPE_DQUOTE(DATE)).txt - person scottpetersen; 14.10.2015
comment
Это хорошо сработало для меня. Не уверен, почему это не принято в качестве ответа - person Ganesh Hegde; 01.12.2016

Это не работает для меня

echo off
sqlcmd -m 1 -S 10.108.96.210\QA832 -U Exception -P Password1 -i E:\KCM_UAT\Exception.sql -o C:\Test_$(ESCAPE_DQUOTE(DATE)).txt  -W -h-1 -s "    "
set /p delExit=Press the ENTER key to exit...:

Файл пишется так

Test_$(ESCAPE_DQUOTE(DATE)).txt
person tdipl    schedule 16.04.2019