2017-04-19 97 views
3

我的目标是从现有的表中提取数据并进行一些基本的转换(例如,派生列,合并连接)。之后,我想将数据存储到一个变量中。然后,我将使用脚本任务用C#编写发送电子邮件程序,并调用变量将这些数据加载到我的电子邮件正文内容中。但我很困惑,在几步转换任务后,我可以在哪里存储这些临时数据。任何帮助,我很赞赏它。SSIS如何将数据流数据存储在临时表中,然后将其附加到电子邮件中?

1.My整个控制流程

enter image description here

2.My很少改造任务的数据流。我想知道如何在Sort4之后存储数据,然后我可以将它们存储到变量中。

enter image description here

+0

这是海报孩子,为什么你应该做的东西在查询,而不是在SSIS.You真的可以通过编写SQL使用邮箱发送电子邮件一个存储过程简化了这一点。 –

回答

1

谢谢你的回复 我也找到了解决方案。 我使用记录集目的地这个数据目的地可以帮助我存储我的临时数据。此目标可以在数据流外部模式下调用。 您还需要创建一个变量来存储您的数据。

enter image description here enter image description here

+0

如果这是您必须接受的解决方案。即使它是你自己的答案 – Yahfoufi

+0

@Yahfoufi我不明白你的意思。 ??? –

+0

你已经发布了解决方案(这个答案)并接受了另一个答案(观察者解决方案),即使它是你的答案,你也应该接受这个答案,因为它是解决你问题的答案 – Yahfoufi

1

可以存储DataTableList这里面的行使用脚本组件。

添加类型Object的SSIS变量(例如:User::DataList

在数据流任务,添加脚本组件作为Destination。将所有列标记为输入。并使用下面的代码。 (Vb.net)

列表版本

Public Class ScriptMain 
    Inherits UserComponent 

    Public Overrides Sub PostExecute() 
     MyBase.PostExecute() 

     Variables.DataList = lstObject 

    End Sub 

    Dim lstObject As Collections.Generic.List(Of DataClass) 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 

     lstObject.Add(New DataClass With { 
        .CompanyName = Row.CompanyName, 
        .CountryName = Row.Country, 
        .EmployeeName = Row.EmployeeName, 
        .Freight = CDbl(Row.Freight)}) 


    End Sub 


End Class 

Public Class DataClass 

    Public Property CompanyName As String 

    Public Property CountryName As String 

    Public Property EmployeeName As String 

    Public Property Freight As Double? 


End Class 

的DataTable版

Public Class ScriptMain 
    Inherits UserComponent 

    Dim dtData As New System.Data.DataTable("dtData") 

    Public Overrides Sub PostExecute() 
     MyBase.PostExecute() 

     Variables.DataList = dtData 

    End Sub 


    Public Overrides Sub PreExecute() 
     MyBase.PreExecute() 

     dtData.Columns.Add("CompanyName") 
     dtData.Columns.Add("CountryName") 
     dtData.Columns.Add("EmployeeName") 
     dtData.Columns.Add("Freight") 

    End Sub 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 


     Dim drRow As DataRow = dtData.NewRow 

     drRow("CompanyName") = Row.CompanyName 

     drRow("CountryName") = Row.Country 

     drRow("EmployeeName") = Row.EmployeeName 

     drRow("Freight") = Row.Freight 

     dtData.Rows.Add(drRow) 


    End Sub 


End Class 
1

。结果存储在一个FlatFileDestination(平面文件名可以用日期时间名称来配置+日期时间),并将此文件用作发送邮件任务中的附件。附件路径可以配置。 使用文件系统任务发送电子邮件后,发送的文件也可以从本地存储中删除。

enter image description here

您还可以使用第三方工具(行货)CozyRoc。它包括诸如“发送邮件任务+”之类的工具,它支持HTML格式的电子邮件正文。使用脚本任务,您可以创建一个动态表(html表格)脚本,该脚本可以存储在一个变量中,并可以显示在电子邮件中。

相关问题