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