Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS-动态创建三个日志文件_Ssis - Fatal编程技术网

SSIS-动态创建三个日志文件

SSIS-动态创建三个日志文件,ssis,Ssis,我已经在属性表达式编辑器中使用了上述内容。在执行包时,它会创建三个日志文件:一个包含整个信息,另两个只包含标题。有时,这三个文件都包含日志详细信息。非常困惑,发生了什么。如果我是一个猜测者,我打赌GETDATE在您的包执行过程中会被评估多次。我对代码的理解是,您正在根据包名、日期和时/分/秒构建路径。每次调用GETDATE时,它都返回当前值。我认为您真正想要的不是使用GETDATE,而是包启动的当前时间。您可以通过检查日志文件的内容来推断其余的计时信息 如果是这种情况,那么简单的解决方法就是用系

我已经在属性表达式编辑器中使用了上述内容。在执行包时,它会创建三个日志文件:一个包含整个信息,另两个只包含标题。有时,这三个文件都包含日志详细信息。非常困惑,发生了什么。

如果我是一个猜测者,我打赌GETDATE在您的包执行过程中会被评估多次。我对代码的理解是,您正在根据包名、日期和时/分/秒构建路径。每次调用GETDATE时,它都返回当前值。我认为您真正想要的不是使用GETDATE,而是包启动的当前时间。您可以通过检查日志文件的内容来推断其余的计时信息


如果是这种情况,那么简单的解决方法就是用系统变量,
@[System::StartTime]

替换所有的
GETDATE()
,我对此非常着迷。根据上面billinkc的建议,我能够让系统开始工作

我想知道它是否取决于字符串中变量的数量

这就是我最后做的。对于我的日志文件连接管理器,我使用了一个作为用户变量的表达式。在名为logFileName的用户变量中,它是以下表达式。你可以看到我只调用了一个变量。也许如果你使用多个相互依赖的变量,它只会创建一个文件

我希望这有帮助

da@[User::Log_path] + @[System::PackageName] + " " + SUBSTRING( (DT_WSTR,29) GETDATE(),1,10)
+  " "+
 ((LEN((DT_WSTR, 2) DATEPART("Hh", GETDATE()))>1)?
(DT_WSTR, 2) DATEPART( "Hh", GETDATE() ) : "0" +(DT_WSTR, 2) DATEPART( "Hh", GETDATE()    )) + "h "+ 

((LEN((DT_WSTR, 2)DATEPART( "mi", GETDATE()))>1)?
(DT_WSTR, 2) DATEPART( "mi", GETDATE() ) :"0" + (DT_WSTR, 2) DATEPART( "mi", GETDATE() )) + "m " +

 ((LEN((DT_WSTR, 2)DATEPART( "ss", GETDATE()))>1)?
(DT_WSTR, 2) DATEPART( "ss", GETDATE() ) :"0" + (DT_WSTR, 2) DATEPART( "ss", GETDATE() )) + "s  " +

 SUBSTRING(@[System::UserName],5,100) +".txt"
为了提供更多信息,我想根据服务器名称更改路径,但我始终无法使其成为动态的,尝试使用MachineName时运气不佳

祝你好运

    "\\\\hard-coded-server-name\\Interfaces\\DailyLogFiles\\logoutput_" +
    REPLACE(REPLACE( (DT_STR,256,1252) @[System::StartTime], "/", "_"), 
    ":", "_") +".txt"