我写了一个SSIS包,用于查询来自定义数据库的数据并将它们放入特定位置的CSV文件中。然后,在SSIS包中,我调用一个预先编写的批处理文件,该文件在指定的目录中创建一个文件夹,以“yyyy-mm-dd”格式将文件夹重命名为日期,然后将创建的CSV文件移动到新创建文件夹。
批处理文件的代码如下:
@echo off
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%date:~6,6%-%date:~3,2%-%date:~0,2%
md \\remote_folder\%date%
move /Y \\remote_folder\*.csv \\remote_folder\%date%
exit
当从我的SSIS包运行此,一切工作正常。
触发代理作业的服务帐户具有完全的管理控制。当使用SQL Server代理将其作为自动化作业进行安排时,该文件夹无法正确创建。我的想法是,SQL代理无法启动批处理文件,或者它们不兼容。
是否有其他人遇到过这种情况或知道解决方法?
是否找到批处理文件? – Sam
是的,但批处理文件在通过代理运行时不正确地创建文件夹。当我说“不正确”时,我的意思是创建的文件夹可以标注为“12”,然后创建一个标记为“09”的子文件夹,然后在之前创建的标记为“18”的子文件夹内创建另一个子文件夹。 – prevynjeftha
你是指什么文件夹被命名?在Windows批处理脚本中,我不是那么棒。作为另一种选择,你可以在PowerShell中做到这一点;) – Sam