0

我想在 SQL 代理下使用 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 代理下的 CmdExec 时,我的日期变成了语法错误——(“文件名、目录名或卷标语法不正确”)

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

4

2 回答 2

3

尝试使用 SQL Server 代理令牌。它们在 MSDN 文章“在作业步骤中使用令牌”中进行了描述。DATE令牌以YYYYMMDD 格式提供当前日期。对于您的示例,请使用:

"...\Extracts\extractdata.$(ESCAPE_DQUOTE(DATE)).txt"
于 2015-04-02T17:38:48.373 回答
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
于 2019-04-16T17:07:57.310 回答