使用SQL Agent CmdExec中的SQLCMD添加日期以输出文件名?

时间:2015-03-07 02:14:35

标签: sql-server sqlcmd sql-agent

我想在SQL Agent下使用SQLCMD从SQL Server数据库运行每周摘录。因为我需要在同一个共享中保存多个提取,所以我想使用当前日期作为提取文件名的一部分。从命令行执行此操作时,我使用:

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"

它完美无缺。

当我将同一语句放入SQL Agent下的CmdExec时,我的日期变为语法错误 - (“文件名,目录名或卷标语法不正确”)

其他人如何处理这个问题?感谢。

2 个答案:

答案 0 :(得分:3)

尝试使用SQL Server代理令牌。它们在MSDN文章"Use Tokens in Job Steps"中有所描述。 DATE 标记以YYYYMMDD格式提供当前日期。对于您的示例使用:

"...\Extracts\extractdata.$(ESCAPE_DQUOTE(DATE)).txt"

答案 1 :(得分:0)

这对我不起作用

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