Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Diskussionen und News zu pullution.net

Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Beitragvon BerndV » Mi 21. Jul 2010, 14:40

Auf unserer Maschine läuft pullution.net 2.0.3 beta "unrund".
Symptome:
  • Die Oberfläche reagiert sehr träge
  • Das Protokoll lässt sich nicht abrufen. Jeder Versuch führt zu einer Timeot-Meldung im Ereignislog. Das funktionierte bei uns unter pullution.net 2.0.2 noch.
  • Pullution holt manche Mails nicht ab, z.B. solche mit einem "+" im Absendernamen.
Im sodacore Ereignislog häufen sich Meldungen wie diese:
Code: Alles auswählen
Protokollname: sodacore studios
Quelle:        pullution.net
Datum:         21.07.2010 14:42:34
Ereignis-ID:   0
Aufgabenkategorie:Keine
Ebene:         Fehler
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      xyz.de
Beschreibung:
Timeout ist abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangs überschritten oder der Server reagiert nicht.

Stacktrace:
   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   bei System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   bei System.Data.SqlClient.SqlDataReader.get_MetaData()
   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   bei pullution.DataAccess.Access.SqlAccessor.FillBySQLStatementString(DataTable table, String sqlStatement)
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="pullution.net" />
    <EventID Qualifiers="0">0</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-07-21T12:42:34.000000000Z" />
    <EventRecordID>679</EventRecordID>
    <Channel>sodacore studios</Channel>
    <Computer>xyz.de</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Timeout ist abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangs überschritten oder der Server reagiert nicht.

Stacktrace:
   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   bei System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   bei System.Data.SqlClient.SqlDataReader.get_MetaData()
   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   bei pullution.DataAccess.Access.SqlAccessor.FillBySQLStatementString(DataTable table, String sqlStatement)</Data>
  </EventData>
</Event>

Protokollname: sodacore studios
Quelle:        pullution.net
Datum:         19.07.2010 06:29:44
Ereignis-ID:   0
Aufgabenkategorie:Keine
Ebene:         Fehler
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      xyz.de
Beschreibung:
Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.
Die Anweisung wurde beendet.

Stacktrace:
   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   bei System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   bei System.Data.SqlClient.SqlDataReader.get_MetaData()
   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   bei pullution.DataAccess.Access.SqlAccessor.FillBySQLStatementString(DataTable table, String sqlStatement)
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="pullution.net" />
    <EventID Qualifiers="0">0</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-07-19T04:29:44.000000000Z" />
    <EventRecordID>659</EventRecordID>
    <Channel>sodacore studios</Channel>
    <Computer>xyz.de</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.
Die Anweisung wurde beendet.

Stacktrace:
   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   bei System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   bei System.Data.SqlClient.SqlDataReader.get_MetaData()
   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   bei System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   bei pullution.DataAccess.Access.SqlAccessor.FillBySQLStatementString(DataTable table, String sqlStatement)</Data>
  </EventData>
</Event>

Hat jemand eine Idee, was da falsch läuft?

Nette Grüße
Bernhard Vornefeld
BerndV
 
Beiträge: 6
Registriert: Fr 11. Jun 2010, 10:02

Re: Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Beitragvon awaescher » Mi 21. Jul 2010, 16:23

Hallo Bernhard,

das hört sich nicht sonderlich gut an. Kannst du bitte prüfen, wie groß die Tabelle "Protocol" in der Datenbank ist? Der Dienst bekommt beim Laden der Protokollsätze einen DB-Timeout, wenn das Ermitteln der Daten länger als x (vermutlich um die 30) Sekunden dauert. Hast du eine Netzstrecke zwischen dem Dienst und der Datenbank? Wenn ja, wie gut ist die Verbindung?

Viele Grüße,
Andreas Wäscher
awaescher
 
Beiträge: 100
Registriert: Fr 2. Mai 2008, 09:26

Re: Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Beitragvon BerndV » Mi 21. Jul 2010, 17:40

Hallo Andreas,

Das SQL Server Management-Studio gibt zur Tabelle dbo.Protocol folgende Informationen:
Das VarDecimal-Speicherformat ist aktviert: False
Indexspeicher: 415,953 MB
Zeilenanzahl: 3869527
Datenspeicher: 1.880,195 MB

Da scheint etwas vollgelaufen zu sein...

Es gibt keine Netzwerkstrecke zwischen Dienst und Datenbank. Alles läufz zusammen mit Exchange 2010 auf einer Maschine.
Als Virenscanner ist der Trend Micro Security Agent drauf.

Nette Grüße
Bernd
BerndV
 
Beiträge: 6
Registriert: Fr 11. Jun 2010, 10:02

Re: Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Beitragvon awaescher » Do 22. Jul 2010, 11:50

Hallo Bernhard,

knapp vier Millionen Datensätze sind schon ordentlich. pullution.net kann automatisch Protokolleinträge nach x Tagen löschen. Ist diese Option aktiv? Wenn ja, solltest du mal bitte kontrollieren, ob das Wiederherstellungsmodell der DB auf "Einfach" steht *. Ansonsten werden alle Datensatzänderungen historisch weitergeführt.
Wenn wirklich gar nichts mehr geht, kannst du die Tabelle Protocol einfach entfernen (DROP TABLE) und mit der UpdateToolbox neu anlegen.

Viele Grüße,
Andreas Wäscher

* Da eine neue Datenbank ihr Wiederherstellungsmodell von der model-Datenbank erbt (und daher auf "Vollständig" stehen kann), werde ich die UpdateToolbox anpassen: Jede pullution.net-Datenbank wird ab Version 2.0.4 auf den Wiederherstellungsmodus "Einfach" umgestellt.



*EDIT*
  • Pullution holt manche Mails nicht ab, z.B. solche mit einem "+" im Absendernamen.

Ist ein Forwarder eingetragen? ich könnte mir vorstellen, dass die Emailadressen-Validierungsroutine diesen Absender als nicht valide erkennt und die Nachricht nicht verarbeitet, wenn kein Forwarder eingetragen ist.
awaescher
 
Beiträge: 100
Registriert: Fr 2. Mai 2008, 09:26

Re: Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Beitragvon BerndV » Fr 23. Jul 2010, 11:02

Hallo Andreas,

danke für Deine Hilfe.

Das Problem mit den wegen ungültiger Absender-Adresse nicht weitergeleiteten Nachrichten hat sich nach dem Eintragen eines Forwarders gelöst.

Zur vollgelaufenen dbo.Protocol:

Einstellungen in pullution.net (unverändert)
Protokollbereinigung:
Weiterleitungen und Fehler 90 Tage speichern
Hinweise 30 Tage speichern

Einstellungen im SQL Server Management Studio (unverändert)
Das Wiederherstellungsmodell der DB pullutionnet steht auf "Einfach"

Ich habe nach Beendigung des Dienstes "sodacore studios - Mail Forwarding Service" die Tabelle dbo.Protocol gelöscht und von der Update Toolbox neu anlegen lassen.
Allerdings gab die Toolbox für die Tabelle dbo.MailForwardArchive folgende Meldung aus:
"Fehler beim aktualisieren des Datenbankschemas:
Das Objekt 'PK__MailForw_09A8749A0AD2A005' ist vom Spalte-Objekt 'MailId' abhängig.
Fehler bei ALTER TABLE ALTER COLUMN MailID, da mindestens ein Objekt auf diese Spalte zugreift."
Was ist hier zu tun?

In dem nun wieder sichtbaren Protokoll wird gehäuft die Fehlermeld "Eine vorhandene Verbindung wurde vom Remotehost geschlossen" angezeigt.

Sowohl der POP3-Server als auch der SMTP-Server (Exchange) können die Abholung und die Annahme verweigern.
Mit dem "guten" alten Pullmail konnte ich dem SMTP-Server folgende z.B. Meldung entlocken:

Code: Alles auswählen
SMTP message rejected, reply
552 5.3.4 Message size exceeds fixed maximum message size

Gibt es in pullution.net auch eine Möglichkeit, solche Meldungen zu erhalten? Wäre für die Fehlereingrenzung durchaus nützlich.
Dieses Diagnosetool sollte auch berücksichtigen, dass bei einem Abruf-Vorgang Fehlermeldungen sowohl vom SMTP, als auch vom POP3-Server generiert werden können.
Es könnte darüber hinaus rückmelden, wieviele Mails hängen geblieben sind.

In der Roh-Fassung (pullmain) sieht das so aus:
Code: Alles auswählen
<< +OK POP server ready H mibap2
<< +OK password required for user "xxxxxx"
<< +OK mailbox "xxxxxx" has 1 messages (11705027 octets) H mibap2
<< +OK 1 11705027
1 messages waiting
<< +OK
Message from: Marion.Muster@mustermail1.de
          to: Muster.Mann@zielserver.de
<< +OK POP server signing off


Nette Grüße
Bernhard Vornefeld
BerndV
 
Beiträge: 6
Registriert: Fr 11. Jun 2010, 10:02

Re: Probleme mit pullution 203 auf Win2008R2 mit SQL-Express 2K8

Beitragvon awaescher » Mi 28. Jul 2010, 00:52

Hallo,

ich konnte dieses Problem eben auf unserem Test-Server nachvollziehen. In unserem Fall konnte die Datenbank keine Datensätze mehr liefern, wenn die Protokolltabelle die 1,5mio-Datensätze-Grenze überschritten hatte. Nicht nur pullution.net hatte dann Probleme, auch die SQL-Server Management-Console konnte dem Server keine Datensätze mehr entlocken.
Der Schritt, die Protokolltabelle zu löschen bzw. umzubenennen und das DB-Schema mit der UpdateToolbox neu erstellen zu lassen war genau richtig. Der gemeldete Fehler ist uns bekannt und intern bereits behoben. Es hat sich eine Feldlänge eines in einem DB-Index vorhandenen Feld geändert und der SQL-Server weigert sich, diese Aktion auszuführen. Das ist aber in dem Fall nicht weiter schlimm, da die Protokoll-Tabelle an diesem Punkt bereits vollständig vorhanden ist.

Zur Protokollierung: pullution.net sollte diese Fehlermeldungen von den Servern auslesen und im Protokoll speichern. Natürlich werden Antworten vom SMTP und vom POP-Server eingeholt, auch wenn es in dem Fall anscheinend nicht funktionierte. In jeder Protokollzeile finden sich zudem die Nachrichten-Statistiken (Mails in POP3, Postfachgröße, übertragene Mails, etc.).

Es ist wirklich bedauernswert, dass die vielen Fehler gebündelt auf Ihren Systemen auftreten. Bitte halten Sie uns auf dem Laufenden, damit wir mit Ihnen zusammen das Programm für weitere Systemkonfigurationen stabil bekommen können.

Vielen Dank,
Andreas Wäscher
awaescher
 
Beiträge: 100
Registriert: Fr 2. Mai 2008, 09:26


Zurück zu pullution.net

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron