我有一个名为“ DestinationDirectory”的SSIS变量,具有以下表达式:
@[User::SourceDirectory] + "\\" + REPLACE(SUBSTRING((DT_WSTR,35)((DT_DBTIMESTAMPOFFSET, 7) GETDATE() ),1,19),":","")
它返回例如:
C:\Finance Extract\2018-11-10 125913
然后,我还有很多其他变量,例如下面的一个名为“ DestinationFileAdjustment”的变量,它们可以处理“ DestinationDirectory”。它具有以下表达式:
@[User::DestinationDirectory]
+ "\\Adjustment_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2)
+ "_"
+ (DT_STR, 4, 1252) DATEPART("yyyy" , GETDATE())
+ ".csv"
应该发生的是在该目录中创建一个文件。我遇到的问题是每次引用@DestinationDirectory时,都会返回不同的时间值(例如C:\ Finance Extract \ 2018-11-10 125914),并且由于目录不存在而出错。
有没有一种方法可以在运行时设置该变量,并且每次引用该变量时都保留相同的时间值?
答案 0 :(得分:1)
为了解决这个问题,我最后要做的是在其中包含一个脚本任务和以下代码:
Dts.Variables("User::DestinationDirectory").Value = Dts.Variables("User::SourceDirectory").Value.ToString + "\\" + Replace(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ":", "")
该硬编码很好地编码了变量的值。
答案 1 :(得分:1)
由于您在表达式中使用<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.3/fabric.js"></script>
<h1>
Dual canvas test
</h1>
<div style="position: relative; height: 300px">
<canvas class="canvas specimen-canvas" id="specimenCanvas" width="300" height="300"></canvas>
<canvas class="canvas label-canvas" id="labelsCanvas" width="300" height="300"></canvas>
</div>
,因此我猜您正在使用包在“ DestinationDirectory”变量中开始的时间?如果是这样,使用GETDATE()
系统变量作为该变量中的表达式(下面的示例)将提供此时间,并且在整个包执行期间保持一致。
@[System::StartTime]