2013-04-24 15 views
6

Ich habe untersucht, wie löschen Sie eine bestimmte Backup-Datei durch eine SQL-Abfrage, aber ich finde nur Ergebnisse über "Löschen von Backups älter als ein Datum". Das ist nicht was ich will. Ich möchte alte Backups behalten, aber ich möchte ein bestimmtes Backup anhand seiner ID löschen können.Löschen Sie bestimmte Backup-Datei über SQL

Ich kann leicht die Einträge aus den msdb Tabellen entfernen und seinen Wiederherstellungsverlauf für eine bestimmte Sicherung, aber ich möchte in der Lage sein, die Dateien als auch über eine SQL-Abfrage zu löschen (Ich kenne ihren vollständigen Pfad, wie es ist in der Datenbank gespeichert), so dass sie nicht weiter Speicherplatz auf der Festplatte verschwenden.

Die Prozedur "xp_delete_file" scheint nicht zu erlauben, eine bestimmte Datei zu löschen.

Ich nehme an, dass, wenn es eine Prozedur zum Löschen alter Dateien gibt, sollte es eine Möglichkeit geben, eine bestimmte Datei zu löschen. Bitte mach dir keine Sorgen über die Sicherheit hier.

+0

haben Sie den Namen und Pfad-Backup-Datei zu finden ...? – Pandian

+0

tue ich. Das ist ziemlich einfach von der Datenbank zu holen. Ich möchte einfach nur "DELETE" (oder gleichwertig) auf diesem Pfad aufrufen können. – Nuno

Antwort

4

Das ist, was ich brauchte.

xp_cmdshell 'del c:\backup\file.bak' 

Es kann erforderlich sein, um den Befehl zu aktivieren, durch:

EXEC sp_configure 'show advanced options', 1 
GO 

EXEC sp_configure 'xp_cmdshell', 1 
GO 

RECONFIGURE 
GO 
+0

Als Heads-Up: xp_delete_file stellt eine Verbindung zu der von Ihnen angegebenen Datei her, VERIFIZIEREN Sie, dass es sich um eine SQL Server-Sicherungsdatei handelt, und löschen Sie sie NUR, wenn sie älter als der angegebene Zeitstempel ist. Der dos DEL-Befehl ist in Ordnung als 'dumme' Option - während xp_delete_file ein bisschen 'zusätzlichen' Schutz/Logik bietet. –

3
--Define a backup device and physical name. 
USE AdventureWorks2012 ; 
GO 
EXEC sp_addumpdevice 'disk', 'mybackupdisk', 'c:\backup\backup1.bak' ; 
GO 
--Delete the backup device and the physical name. 
USE AdventureWorks2012 ; 
GO 
EXEC sp_dropdevice ' mybackupdisk ', 'delfile' ; 
GO 

http://technet.microsoft.com/en-us/library/ms188711.aspx

+0

Ich verwende diese Methode, aber ich bin nicht in der Lage, die Datei vom Server zu löschen. – rahularyansharma

+0

Erhalten Sie einen Fehler? Vielleicht brauchen Sie genügend Berechtigungen. Erfordert die Mitgliedschaft in der festen Serverrolle diskadmin. http://technet.microsoft.com/en-us/library/ms188903.aspx – Alexey

16

alt sein, aber vielleicht jemand helfen. xp_delete_file kann verwendet werden, um bestimmte Sicherungsdateien zu löschen. Versuchen Sie den Code unten:

EXECUTE master.dbo.xp_delete_file 0,N'c:\backup\backup1.bak' 
1

ein Backup-Gerät erstellen, mit einem physischen Namen, die die Backup-Datei verweist:

exec master..sp_addumpdevice @devtype = 'disk', 
@logicalname = '<logical_name>', 
@physicalname = '<path + physical filename>' 

Dann ausführen:

exec master..sp_dropdevice '<logical_name>', delfile 

Und Ihre Die Datei ist weg!

Physische Dateinamen können in der Tabelle ‚msdb..backupmediafamily‘

Verwandte Themen