2016-12-28 7 views
1

アプリケーションイベントログからSSISエラーを表示するためにサーバーイベントログを正常に読み取っています。その目的は、管理者としてサーバーにログインすることなく、最初の行のトラブルシューティングを行うことができるようにすることです。ASP.NETのSSISエラーのイベントログからパッケージ名(ソース名)を取得する方法

私はソースがSQLISPackage110である場合のエラーを表示するためにvb.netのEventLogEntryを使用しています。しかし、私が困惑しているのは、イベントログのエラーを見るときに、パッケージ名を表示する「ソース名」プロパティがあるということです。しかし、EventLogEntryはこのプロパティを持っていないようで、どのパッケージがエラーを返したかを知ることができません。

誰もがこの問題に遭遇し、それを回避する方法を見つけることができましたか?あなたが気づいてきたよう エラーのスクリーンショットと私vb.netのコードの一部が

Event log entry with source name

Dim myEventLogEntryCollection As EventLogEntryCollection = myEventLog1.Entries 

     myEventLog1.Close() 

     Dim x As Integer 
     Dim entry As EventLogEntry 

     If myEventLogEntryCollection.Count > 0 Then 

      strTable += "<table class='table table-bordered'><tr><th>Time Written</th><th>Source</th><th>Event type</th><th>Message</th></tr>" 

      For Each entry In myEventLogEntryCollection.Cast(Of EventLogEntry).Reverse 'cast and reverse to show newest first 

       If entry.Source = strEventSource And (entry.EntryType.ToString = "Error" Or entry.EntryType.ToString = "Warning") Then 
        strTable += "<tr>" 
        strTable += "<td>" + entry.TimeWritten.ToShortDateString + " " + entry.TimeWritten.ToShortTimeString + "</td>" 
        strTable += "<td>" + entry.Source.ToString + "</td>" 
        strTable += "<td>" + entry.EntryType.ToString + "</td>" 
        strTable += "<td>" + entry.Message + "</td>" 
        strTable += "</tr>" 
        x += 1 
       End If 

       If x > 100 Then Exit For 'could be 1000s in the log 
      Next 

      strTable += "</table>" 

     End If 

答えて

1

下にある、「ソース」LogEntry propertiesのものではありません。 代わりに、「ソース」という単語は、大文字のプロパティの内側にトラップされたテキストに過ぎません。したがって、「ソース」情報を取得するには、Messageから解析する必要があります。メッセージを行に分割します。次に、行をループし、「ソース」という単語が含まれている行を見つけたら何かを実行してください このコードはテストされていません。しかし、考えを与えるだけです。

Dim messageLines As String() = Nothing 

messageLines = entry.Message.Split(Environment.NewLine) 

Dim line As String 

For Each line In messageLines 
If line.Contains("Source") Then 
    'your code here 
Next line 

SSISパッケージはlog to many destinationsです。そして、はい、Windowsイベントログへのロギングはオプションですが、実際にはそれを使用することはめったにありません。 Windowsのイベントログは永続的ではありません。デフォルトでは、彼らはover twenty megabytes in sizeを取得すると、履歴のトリミングを開始します。トラブルシューティングのためにSSISログ情報を保存するのは悪い場所です。

あなたのパッケージ作成者に、SSIS SQL loggingを代わりに使用するよう丁寧に提案してもらえますか?彼らがSQLにログを記録すると、必要な情報を整理し、組織全体のクエリ、集約、分析を容易にする、すばらしい検索可能な方法で格納します。必要な正確な情報を得るために使うことができるソース列もあります。アップSQLロギング再ヘッドの

enter image description here

+0

感謝。 Windowsのイベントログはデフォルトのようですが、私は今あなたが提案したようにSQLログを追加しました - – Webbo

+0

でうまくいっています。あなたのSQLバージョンに応じて、Microsoftは 'sysssislog'テーブルを解析するためのいくつかの事前構築されたSSRSレポートを持っています。恥知らずのプラグインですが、私は 'sysssislog'テーブルから役に立つ情報を収集するのに役立つように[この記事(http://troywitthoeft.com/simple-ssis-package-monitoring-for-sql-server-2008/)]と書いています。 –

関連する問題