我有一个SSIS包,可以检测通过管道传递的数据集中的测试域。我使用脚本组件发送电子邮件通知,列出已标记为测试域的域。当我第一次发布包含通知的包时,它为每个域发送了一个单独的电子邮件,在收到许多电子邮件后,我更改了脚本以发送包含测试域列表的单个电子邮件。但是,每次发布此更新时,它都会继续为每个测试域发送一个通知。
我已经研究过的事情:
因此,即使在生产服务器上找不到原始内容的痕迹,我也不知道它来自何处。我没有看到任何内容可以缓存的内容,但即使它被缓存,那么当我禁用通知步骤时,它仍然会发送通知。
我担心如果不能修复,那么这是否意味着还有其他未完全更新的软件包?
非常感谢任何想法或帮助。
这几乎就是脚本组件的设置......
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
答案 0 :(得分:0)
克里斯,
我有一些问题:
我猜你在脚本任务中使用循环机制来遍历所有域;找到其中的测试者;将它们附加到一个字符串,最后发送一封电子邮件。它是否正确?
您是在脚本中发送邮件还是创建了单独的“发送邮件”任务?
您邮件的正文是否来自配置文件中的某些变量?