Benutzer mit den meisten Antworten
Problem mit SQL Server 2008 und Datenbank-Email

Frage
-
Hallo
Wir verwenden seit längerem SQL Server 2008 (Standard/SP1) auf einem Windows Server 2003 (Standard/SP2). Dabei nutzen wir auch das Danbenk-E-Mail Modul von SQL Server für das automatisiert senden div. Kunden Emails mit Anhängen und/oder SQL Abfragen. Datenbank-E-Mail funktionierte auch gut, bis vor 1, 2 Wochen der Status bei der Abfrage <exec msdb.dbo.sysmail_help_status_sp> fast immer 'stopped' war.
Nun ist es aber soweit, das die Mailqueue zwar mit ca. 40 Nachrichten gefüllt ist, jedoch diese nicht mehr an den Mail-Server geleitet werden.
Die Kontrolle der Windows-Ereignisanzeige und des SQL Server Log (select * from sysmail_log) haben uns dann auf einen MS-Hotfix geführt (KB941105). Die Meldung in der Windows Ereignisanzeige (Anwendung): Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst. Nach dem installieren des Hotfix' trat aber keine Besserung, also keine Auslieferung der Email aus der Datenbank-Warteschlange an den Mailserver. Es werden nach wie vor keine Email versandt.
Die User, die die Prozedur sp_senddbmail aufrufen sind in der MSDB alle der Rolle DatabaseMailUserRole zugeteilt. Auch ein löschen und erneutes anlegen des Mail-Kontos und des Mail-Profil haben nicht geholfen.Auch der Service Broker in der MSDB ist aktiviert und alles hat ja eigentlich gut funktioniert.....
Weiss jemand Rat?Und kann ich die Mailqueue irgendwie leeren, um von vorn zu beginnen?
Vielen herzlichen Dank für jede Antwort, denn unsere Kunden warten nun seit 1 Woche auf div. Lieferungen.....
Antworten
-
Hallo,
löschen kannst Du E-Mails mit sysmail_delete_mailitems_sp
(und das Protokoll solltest Du ggf. auch periodisch aufräumen)Was den eigentlichen Fehler angeht, bezweifle ich das KB941105 damit zusammenhängt,
der sich vornehmlich um OLE dreht. Eine OutOfMemoryException weist hier auf die .NET
Komponente hin, der hier der Speicher ausgeht.
Relevanter wären die Cumulative Updates SQL Server Service Pack 1 ,
wobei ich keinen Fehler in dem zusammenhang finden konnte.
Was aber nichts heißen soll, da die eigentliche Fehlerurache im Zusammenhang
mit dem Service Broker oder der .NET Einbindung stehen kann.Gruß Elmar
- Als Antwort markiert Andrei Talmaciu Freitag, 16. Juli 2010 09:41
Alle Antworten
-
Hallo,
löschen kannst Du E-Mails mit sysmail_delete_mailitems_sp
(und das Protokoll solltest Du ggf. auch periodisch aufräumen)Was den eigentlichen Fehler angeht, bezweifle ich das KB941105 damit zusammenhängt,
der sich vornehmlich um OLE dreht. Eine OutOfMemoryException weist hier auf die .NET
Komponente hin, der hier der Speicher ausgeht.
Relevanter wären die Cumulative Updates SQL Server Service Pack 1 ,
wobei ich keinen Fehler in dem zusammenhang finden konnte.
Was aber nichts heißen soll, da die eigentliche Fehlerurache im Zusammenhang
mit dem Service Broker oder der .NET Einbindung stehen kann.Gruß Elmar
- Als Antwort markiert Andrei Talmaciu Freitag, 16. Juli 2010 09:41
-
Hallo Elmar
Vielen herzlichen Dank für die Hilfe.
Das Löschen der Queue bewirkte zuerst mal das mir die msdb-log Datei dermassen anwuchs, das die System-Platte vollgeschrieben wurde und ich zuerst (über Nacht) die MSDB Data und MSDB Log auf eine andere Platte verschieben musste.
Danach konnte die Mailqueue auch gelöscht werden. Auf der Firewall habe ich zusätzlich noch hinterlegt, das outgoing SMTP nicht nur vom Mailserver selbst, sondern auch vom SQL Server rausdürfen. Nun funktioniert die Datenbank-E-Mail wieder.
Nun habe ich einfach noch das Problem, das ich das MSDB Log nicht kleiner kriege. Die 15 GB die es nun an Platz nimmt, kann ich nicht 'shrinken'. Ein Backup habe ich bereits erstellt (mit Option 'Abschneiden'), doch in den Eigenschaften im SQL Management Studio wird die Anfangsgrösse des Logs als 15 GB definiert. Gerne würde ich das abschliessend auch in den Griff kriegen.....
Weisst Du wie ich diese Anfangsgrösse wieder auf eine akzeptable Grösse definiere und das Log auch noch shrinken kann?
Liebe Grüsse Severin
-
Hallo,
im Standard wird die msdb im Wiederherstellungsmodus einfach betrieben,
da tritt das Problem nicht auf. Zudem sollten die Systemdatenbanken
(master, msdb und ggf. model) immer regelmäßig gesichert werden.Da ihr offensichtlich massiv auf Datenbank-EMail setzt, wäre jedoch das
Wiederherstellungsmodell vollständig und eine regelmäßige Vollsicherung
wie eine reguläre Protokollsicherung sinnvoll, siehe auch:
Überlegungen zum Sichern der model- und msdb-Datenbanken
Um nun Deine msdb kleiner zu kriegen, erstelle eine Vollsicherung
(sofern sie länger zurückliegt) und anschließend eine Protokollsicherung.
Willst Du nur einfach die Daten loswerden - weil keine Sicherungen existieren -
wäre ein kurzzeitiger Wechsel auf das Wiederherstellungmodell einfach sinnvoll.
Anschließend solltest Du die msdb verkleinern können.Danach setze direkt einen Sicherungsplan für die msdb (und die
anderen Systemdatenbanken soweit bisher nicht vorhanden) auf.Zudem solltest Du einen Wartungsplan einrichten, der die alten E-Mails
und das Mail-Protokoll periodisch löscht (durch Aufruf der Prozeduren)
sonst wird es irgendwann wieder enge ;-)
Siehe dazu SQL Server Database Mail Cleanup ProceduresGruß Elmar