0

パイプラインを通過するデータ セットからテスト ドメインを検出する 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
4

1 に答える 1

0

クリス、

いくつか質問があります:

スクリプト タスクでループ メカニズムを使用して、すべてのドメインを反復処理していると思います。それらの中からテストのものを見つけます。それらを文字列に追加し、最後に電子メールを送信します。これは正しいです?

スクリプトでメールを送信していますか、それとも別のメール送信タスクを作成していますか?

メールの本文は、構成ファイルの変数から来ていますか?

于 2012-09-19T04:29:53.380 に答える