vinyL Geschrieben 13. März 2007 Teilen Geschrieben 13. März 2007 Hallo, ich habe hier ein Problem, dass trotz Einrichtung eines Tasks die alten TRN Log Dateien nicht gelöscht werden. Dann kam ich durch googeln auf xp_delete_file Befehl welcher wie folgt wäre: EXECUTE master.dbo.xp_delete_file 0,'C:\Programme\Microsoft SQL Server\MSSQL\BACKUP',N'TRN','2007-03-09' Nur jetzt ist das Problem, dass diese so genannte master.dbo.xp_delete_file nicht vorhanden ist. Wie kann ich diese erstellen bzw. auf was bezieht sich normalerweise solch eine Prozedur? Oder weiß wer vl. ein noch einfacheren Weg, als ich ihn hier einschlagen möchte. Wie gesagt, mir geht es Prinzipiell darum, dass der Task nicht die älteren Logs von 5 Tagen löscht. - Warum auch immer EDIT: Wäre dieses hier, wenn ich das noch soweit anpasse ausreichend? DECLARE @ThreeDaysAgo VARCHAR(50) SELECT @ThreeDaysAgo = CAST(DATEADD(d, -3, GETDATE()) AS VARCHAR) -- NB this will delete any "bak" file not only the maintenance plan ones. -- in case the backups are failing check we have at least 2 backups in the folder -- check > 3 as we always have a final null record for the dir listing - note also that -- its > 2 backups and not necessarily 2 backups from 3 days ago. Using 2 as its going -- to run before the backup job, but the most likely cause of failure is lack of disk space -- but we don't want a failure happening and end up with no backups EXEC dbo.xp_cmdshell 'dir D:\Backups\db\*.bak /b' IF @@ROWCOUNT > 3 BEGIN EXECUTE dbo.xp_delete_file 0,N'D:\Backups\db',N'bak',@ThreeDaysAgo -- only do log if deleting the main backup EXEC dbo.xp_cmdshell 'dir D:\Backups\db\log\*.trn /b' -- for logs we do 3 backups a day so check > 9 IF @@ROWCOUNT > 9 EXECUTE dbo.xp_delete_file 0,N'D:\Backups\db\log',N'trn',@ThreeDaysAgo END Vielen Dank soweit Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 13. März 2007 Teilen Geschrieben 13. März 2007 Funktioniert es, wenn Du den Task ueber die GUI erstellst? - Datenbankwartungsplaene (sinngemaesser Punkt im Enterprise Manager) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
vinyL Geschrieben 15. März 2007 Autor Teilen Geschrieben 15. März 2007 Leider nicht, darum bin ich nun am fuseln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 15. März 2007 Teilen Geschrieben 15. März 2007 Einfache Ursache: Die extended Stored Procedure xp_delete_file gibt es erst ab SQL Server 2005. Unter SQL Server 2000 musst Du xp_sqlmaint nutzen. xp_sqlmaint ruft das Programm SQLMaint.exe auf. siehe xp_sqlmaint (Transact-SQL) siehe sqlmaint (Dienstprogramm) siehe Creating Backup Jobs in SQL Server 2005 Nachtrag: Die xp_cmdshell gibt es auch erst ab SQL Server 2005. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 16. März 2007 Teilen Geschrieben 16. März 2007 Nachtrag: Die xp_cmdshell gibt es auch erst ab SQL Server 2005. Du meinst wohl eher die Server-Konfig-Option 'xp_cmdshell' (umzu steuern ob die Prozedur ausgeführt werden darf), die gibt es in der Tat erst ab SQL Server 2005. Den Transact-SQL-Befehl xp_cmdshell gibt es schon auf dem SQL Server 2000... Gruß, Honky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
vinyL Geschrieben 16. März 2007 Autor Teilen Geschrieben 16. März 2007 Vielen Dank soweit für eure Pots. Die konnten mir jedoch nicht weiterhelfen, ich habe hier auch noch eine schöne Seite gefunden: Magerquark.de » Blog Archiv » Fehlermeldung “Fehler bei sqlmaint.exe” bei einem geplanten Auftrag in SQL Server Jedoch greift dieser job nicht so wirklich: EXECUTE master.dbo.xp_sqlmaint N'-PlanID F93771ED-0620-44D6-9525-7A8DBD15ADE9 -WriteHistory -VrfyBackup -BkUpMedia DISK -BkUpDB "C:Programme\Microsoft SQL Server\MSSQL\BACKUP -BkUpLog -UseDefDir -DelBkUps 5DAYS -BkExt "TRN"' Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
vinyL Geschrieben 16. März 2007 Autor Teilen Geschrieben 16. März 2007 Ich habe den Job jetzt erstmal auf eine Datenbank laufen lassen. Nun funzt er ohne Probleme, echt super. Das große Aber ist jetzt, dass er zwar laut Manager erfolgreich ausgeführt wird, aber nicht im Verzeichnis immer noch seti dem 9.3.07 TRN Logs vorhanden sind, obwohl der Job auf Älter als 24H steht. Microsoft ® SQLMaint-Dienstprogramm (Unicode), Version 8.00.194 Copyright © Microsoft Corporation, 1995 - 1996 (null) An Computer mit SQL Server 'OPSERV' angemeldet als 'NT-AUTORITT\SYSTEM' (vertraut) Startet Wartungsplan 'Transaktionlogs _ALT_ lschen' fr 16.03.2007 11:53:03 [1] Datenbank vinyL_PROD: Transaktionsprotokoll Sicherung... Ziel: [C:\Programme\Microsoft SQL Server\MSSQL\BACKUP\vinyL_PROD_tlog_200703161153.TRN] (null) ** Ausfhrungsdauer: 0 Std, 0 Min, 1 Sek ** (null) [2] Datenbank vinyL_PROD: Sicherung berprfen... (null) ** Ausfhrungsdauer: 0 Std, 0 Min, 1 Sek ** (null) [3] Datenbank vinyL_TEST: Transaktionsprotokoll Sicherung... Ziel: [C:\Programme\Microsoft SQL Server\MSSQL\BACKUP\vinyL_TEST_tlog_200703161153.TRN] (null) ** Ausfhrungsdauer: 0 Std, 0 Min, 1 Sek ** (null) [4] Datenbank vinyL_TEST: Sicherung berprfen... (null) ** Ausfhrungsdauer: 0 Std, 0 Min, 1 Sek ** (null) [5] Datenbank vinyL_PROD: Alte Sicherungsdateien lschen... 0 Datei(en) gelscht. (null) [6] Datenbank vinyL_TEST: Alte Sicherungsdateien lschen... 0 Datei(en) gelscht. (null) Lscht alte Textberichte... 0 Datei(en) gelscht. (null) Ende des Wartungsplanes 'Transaktionlogs _ALT_ lschen' fr 16.03.2007 11:53:05 SQLMAINT.EXE Prozessexitcode: 0 (Erfolg) (0 rows(s) affected) Ähm..... eine Batch Datei schreiben?? ist doch völliger Käse! Warum greift diese Option von MS nicht, obwohl sie laut Programm ohne Fehler ausgeführt wurde???? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.