我想在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时,我的日期变为语法错误 - (“文件名,目录名或卷标语法不正确”)
其他人如何处理这个问题?感谢。
答案 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