パイプラインを通過するデータ セットからテスト ドメインを検出する SSIS パッケージがあります。スクリプト コンポーネントを使用して、テスト ドメインとしてマークされたドメインを一覧表示する電子メール通知を送信します。最初に通知付きのパッケージを投稿したとき、ドメインごとに個別の電子メールが送信されました。多くの電子メールを受信した後、テスト ドメインのリストを含む 1 つの電子メールを送信するようにスクリプトを変更しました。ただし、この更新プログラムを公開するたびに、テスト ドメインごとに 1 つの通知が送信され続けます。
私が調べたこと:
- 1通目のメールと2通目のメールの内容が異なります。そこで、元の電子メールの内容が保存されている可能性がある場所を見つけることができるかどうかを確認するために、Notepad++ で「ファイル内を検索」検索を実行しました。元のコンテンツを含む結果は見つかりませんでした。
- 通知を送信してパッケージを公開するステップを無効にしました。これにより、通知電子メールが送信されなくなります。ただし、ステップを再度有効にして公開すると、テスト ドメインごとに 1 つの電子メールを送信する元の通知が再び開始されます。
- このパッケージを実行する 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