Update: Senden Wartung Berichte per E-Mail an Operator kann nicht im Wartungsplan

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 279867 - Produkte anzeigen, auf die sich dieser Artikel bezieht
# FEHLER: 351140 (SHILOH_BUGS)
Alles erweitern | Alles schließen

Problembeschreibung

Eine SQL Server Datenbank-Wartungsplan enthält eine Option, einen Bericht Wartung (d. h., eine Datei) zu senden, Ergebnisse für die Ausführung des Wartungsplanes enthält, per E-mail an einen vordefinierten Operator auf dem Server. Per e-Mail die Wartung Berichtdatei an den Operator kann mit den folgenden Fehlermeldung fehlschlagen, die in den Bericht Wartung für die Datenbank-Wartungsplan:
Fehler 18025: [Microsoft] [ODBC SQL Server Driver] [SQL Server] Xp_sendmail: e-Mail-Fehler 0 x 80004005
Dieser Fehler wirkt sich die Berichterstellung des Auftrag-Status nicht; Auftrag selbst wird als erfolgreich angezeigt.

Ursache

Erweiterte gespeicherte Prozedur Xp_sendmail schlägt mit der oben angegebene Fehler beim Versuch, eine geöffnete Datei als e-Mail-Anlage senden. Sqlmaint.exe den Wartungsplan ausführt und schreibt Ausgabe in die Berichtdatei. Letzte Schritt in Maintenance Plan, in dem Senden einer e-Mail-Nachricht wird in den Bericht auch aufgezeichnet. Da die Berichtdatei noch geöffnet, ist wenn Xp_sendmail versucht, senden als Anlage, schlägt der Versuch fehl.

Lösung

Beziehen Sie das neueste Service Pack für SQL Server 2000, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
290211Info: Wie Sie das neueste SQL Server 2000 Service Pack erhalten

Abhilfe

Zur Umgehung dieses Problems zu diesem Problem finden Sie im Abschnitt "Weitere Informationen" dieses Artikels.

Status

Microsoft hat bestätigt, dass dies ein Problem in SQL Server 2000 ist. Dieses Problem wurde erstmals im SQL Server 2000 Service Pack 1.

Weitere Informationen

Um dieses Problem zu umgehen, können Sie das folgende Skript als eine zusätzliche Auftrag Schritt in der letzten Auftrag, die durch einen bestimmten Maintenance Plan erstellt einschließen. Dieses Skript unten sendet die letzte Berichtdatei für eine bestimmte Wartungsplan an eine angegebene e-Mail-Adresse.

Gehen Sie folgendermaßen vor um diese Problemumgehung zu verwenden,
  1. Identifizieren Sie die letzte Auftrag für den Wartungsplan.
  2. Klicken Sie mit der rechten Maustaste auf die Auftrag, klicken Sie auf Eigenschaften , klicken Sie auf die Schritte , wählen Sie die Schritt und klicken Sie dann auf Bearbeiten .
  3. Klicken Sie im Dialogfeld Auftragsschritte bearbeiten auf die Registerkarte Erweitert .
  4. Legen Sie auf Gehe zum nächsten Schritt auf Erfolg-Aktion .
  5. Klicken Sie auf OK im Dialogfeld Auftragsschritte bearbeiten .
  6. Klicken Sie auf neu , um einen neuen Schritt hinzufügen, und geben Sie die Schritt ein. Typ muss Transact-SQL-Skript (TSQL) sein und Datenbank sollte master .
  7. Fügen Sie das folgende Skript in das Befehlsfenster:
    declare @planname varchar(100)
    declare @dir varchar(200)
    declare @operator varchar(50)
    declare @cmd varchar (200)
    declare @mailfilename varchar(200)
    declare @filenamelen int
    
    --Values set here can actually be provided as parameters to a stored procedure.
    --If provided as parameters to a stored procedure, rem the following select statements.
    --@plananme is the plan whose maintenance report is sent.
    --@dir is the log directory for SQL Server. It is the directory to which the 
    --maintenance report files are written. 
    --@operator is the email address of the person to whom the report file should be mailed.
    
    select @planname = 'Database Maintenance Plan 1'
    select @dir ='c:\Program Files\Microsoft SQL Server\MSSQL$SQL2K1\LOG'
    select @operator ='email@domain.com'
    --You can automatically set the above by reading various values from SQL Server.
    
    SET NOCOUNT ON
    IF RIGHT (@dir, 1) <> '\' 
    begin
    select @dir =@dir +'\'
    end
    SELECT @dir = 'dir /s /b '+'"'+@dir + @planname+'*.txt'+'"' +' >c:\dir.txt'
    
    create table #TMP_MAINT_FILENAMES (NAME1 varchar(8000))
    exec xp_cmdshell @dir
    BULK INSERT #TMP_MAINT_FILENAMES
       FROM 'c:\dir.txt'
       WITH 
          (
             ROWTERMINATOR = '\n'
          )
    
    select @mailfilename=MAX(name1) from #TMP_MAINT_FILENAMES
    print 'The following file is being sent as an atachement'
    print @mailfilename
    
    --Set the various parameters for xp_sendmail.
    declare @tmpmessage varchar(300)
    declare @tmpsubject varchar(300)
    select @tmpmessage = 'This is the last maintenance report on the server for the maintenance plan '+@planname
    select @tmpsubject = 'SQL Server Maintenance Report for '+@planname
    
    --Send the last file for the maintenance plan.
    exec master..xp_sendmail @recipients= @operator, @subject =@tmpsubject, @message=@tmpmessage, 
    @attachments= @mailfilename
    
    --Perform cleanup here.
    drop table #TMP_MAINT_FILENAMES
    exec master..xp_cmdshell "del c:\dir.txt"
    SET NOCOUNT OFF
    					
  8. Stellen Sie sicher, dass die Werte der @ Planname, @ Dir und @ Operator im Skript festgelegt werden.
  9. Speichern Sie die Auftrag-Schritt.
Microsoft bietet Programmierbeispiele für Abbildung nur ohne Gewährleistung oder konkludent. Dies umfasst, ist jedoch nicht beschränkt auf konkludenten Garantien der Handelsüblichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der Programmiersprache, die Programmierungsbeispiele ist und mit den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden vertraut sind. Microsoft Support-Technikern helfen Erläuterung die Funktionalität einer bestimmten Prozedur, Sie werden ändert jedoch nicht diese Beispiele bieten Funktionen hinzugefügt oder Verfahren, um Ihren Anforderungen entsprechend zu erstellen.

Eigenschaften

Artikel-ID: 279867 - Geändert am: Donnerstag, 23. Juni 2005 - Version: 5.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
Keywords: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 279867
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com