0

你好,我在文本文件的 SSIS 日志提供程序的路径目标方面遇到了问题

起初我使用静态路径,D:\\但现在我想从 sql 表中获取路径并将其放在变量上,

所以我为 SSIS txt 文件连接字符串创建表达式生成器

@[User::LogPath]+ @[System::PackageName]+ ("_"+(RIGHT((DT_WSTR,4)
DATEPART("yyyy",GetDate()),4)+
RIGHT("0"+(DT_WSTR , 2)
 DATEPART("mm", GetDate()),2)+
RIGHT("0"+(DT_WSTR,2)
DATEPART("dd",GetDate()),2)+"_"+
RIGHT("0"+(DT_WSTR,2)
DATEPART("HH",GetDate()),2)+"_"+
RIGHT("0"+(DT_WSTR,2)
DATEPART("mi",GetDate()),2)+"_"+
RIGHT("0"+(DT_WSTR,2)
DATEPART("SS",GetDate()),2))+".log")

但是@[User::LogPath]没有给出路径值,所以 txt 日志文件没有创建

4

1 回答 1

1

我在我所有的 SSIS 包中都设置并运行了这个,因为我喜欢让所有东西都由表驱动。

在每个包中,我创建了一个名为“LoggingPath”的字符串变量,该变量使用如下选择语句填充了 SQL 任务:

SELECT FilePath
FROM Files
WHERE FileFunction = 'Log'
  AND SSISPackage = 'ImportStuff'

在此 SQL 任务中,ResultSet 设置为“单行”。对于结果集,我有 Result Name = 0 和 Variable Name = "User::LoggingPath" 引用前面提到的变量。我还将此 SQL 任务的延迟验证设置为“真”。

当 SQL 任务运行时,它会填充变量,然后在 SSIS 日志文本日志文件下的以下表达式(类似于您的表达式)中使用该变量:

@[User::LoggingPath] + "\\" + @[System::PackageName] + "_" + (DT_STR,4,1252)DATEPART ("yyyy" , @[System::StartTime]) + RIGHT(" 0" + (DT_STR,4,1252)DATEPART( "mm" , @[System::StartTime] ), 2) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , @[System ::StartTime] ), 2) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "hh" , @[System::StartTime] ), 2) + RIGHT("0" + (DT_STR,4 ,1252)DATEPART( "mi" , @[System::StartTime] ), 2) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "ss" , @[System::StartTime] ), 2 ) + ".csv"

确保您记得应用双反斜杠“\\”,如上所示。希望这可以帮助。

科什

于 2013-03-11T18:48:39.340 回答