SSIS生产包没有显示一些变化

时间:2012-09-13 14:51:43

标签: scripting ssis

我有一个SSIS包,可以检测通过管道传递的数据集中的测试域。我使用脚本组件发送电子邮件通知,列出已标记为测试域的域。当我第一次发布包含通知的包时,它为每个域发送了一个单独的电子邮件,在收到许多电子邮件后,我更改了脚本以发送包含测试域列表的单个电子邮件。但是,每次发布此更新时,它都会继续为每个测试域发送一个通知。

我已经研究过的事情:

  • 第一封电子邮件和第二封电子邮件的内容不同。所以我做了一个"在文件中查找"在Notepad ++中搜索,看看我是否能找到原始电子邮件内容的存储位置。没有找到包含原始内容的结果。
  • 我已禁用发送通知并发布包的步骤。这导致不发送通知电子邮件。但是,当我重新启用该步骤并发布时,将再次启动为每个测试域发送单个电子邮件的原始通知。
  • 我尝试删除执行此程序包的SQL作业并重新创建它,但原始通知仍然存在。

因此,即使在生产服务器上找不到原始内容的痕迹,我也不知道它来自何处。我没有看到任何内容可以缓存的内容,但即使它被缓存,那么当我禁用通知步骤时,它仍然会发送通知。

我担心如果不能修复,那么这是否意味着还有其他未完全更新的软件包?

非常感谢任何想法或帮助。

这几乎就是脚本组件的设置......

Public Class ScriptMain
    Inherits UserComponent

Private strDomains As String = String.Empty

Public Overrides Sub PreExecute()
    MyBase.PreExecute()
End Sub

Public Overrides Sub PostExecute()
    If strDomains.Length > 0 Then
        Dim myHtmlMessage As MailMessage
        Dim mySmtpClient As SmtpClient
        Dim strMessageBody As New StringBuilder

        strMessageBody.AppendLine("The listed domains have blah blah blah...")
        strMessageBody.Append(strDomains)
        strMessageBody.AppendLine(String.Empty)
        strMessageBody.AppendLine("Love and Kisses,")
        strMessageBody.AppendLine("Your Loving ETL Package")
        strMessageBody.AppendLine(Variables.PackageName)

        myHtmlMessage = New MailMessage("ETLNotices@company.com", "me@company.com", "Possible Test Domains", strMessageBody.ToString)

        mySmtpClient = New SmtpClient("smtp.company.com")
        mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials
        mySmtpClient.Send(myHtmlMessage)
    End If

    MyBase.PostExecute()
End Sub

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim str As New StringBuilder
    str.AppendLine(strDomains)
    str.AppendFormat("{0}", Row.DomainName)

    strDomains = str.ToString
End Sub

End Class

1 个答案:

答案 0 :(得分:0)

克里斯,

我有一些问题:

我猜你在脚本任务中使用循环机制来遍历所有域;找到其中的测试者;将它们附加到一个字符串,最后发送一封电子邮件。它是否正确?

您是在脚本中发送邮件还是创建了单独的“发送邮件”任务?

您邮件的正文是否来自配置文件中的某些变量?

相关问题