it-swarm.com.de

TSQL-Befehl zum Löschen von Sicherungsdateien, die älter als N Stunden sind

Kann mir bitte jemand mit einem SQL-Befehl helfen, Sicherungsdateien zu löschen, die älter als N Stunden sind?

7
Ramya

Denken Sie daran, dass T-SQL nicht zur Dateiverwaltung verwendet werden sollte. Stattdessen sollten Sie Powershell verwenden, um Dateien usw. zu löschen, zu verschieben oder zu kopieren.

Tsql Weg:

verwenden xp_cmdshell Befehl zusammen mit dem Befehl FORFILES

löschen Sie beispielsweise alle SQL-Dateien im Verzeichnis C:\Backup und seinen Unterordnern, in denen das Änderungsdatum der Datei älter als 30 Tage ist.

EXEC xp_cmdshell 'FORFILES /p c:\BACKUP /s /m *.sql /d -30 /c "CMD /C del /Q /F @FILE"'

Haftungsausschluss: Das Aktivieren von xp_cmdshell ist ein Sicherheitsrisiko und wird von nicht vielen Unternehmen zugelassen. =

Powershell Way -> Dies sollte der richtige Ansatz sein !!

Ein vollständiges Skript finden Sie unter technet .

## Delete files older than 90 days

$a = Get-ChildItem C:\Scripts
foreach($x in $a)
    {
        $y = ((Get-Date) - $x.CreationTime).Days
        if ($y -gt 90 -and $x.PsISContainer -ne $True)
            {$x.Delete()}
    }
6
Kin Shah

Wenn Sie Dateien pragmatisch entfernen möchten, können Sie die erweiterte gespeicherte Prozedur master.dbo.xp_delete_file Verwenden. Es wird jedoch im Allgemeinen nicht empfohlen, diese zu verwenden, da diese Prozedurtypen in einer zukünftigen Version von SQL Server entfernt werden sollen, obwohl ich es bin Ich bin mir nicht sicher, wann das sein wird.

Wenn dies möglicherweise noch lange nach der Bereitstellung vorhanden ist, würde ich empfehlen, einen maintenance plan Zu verwenden, da diese Funktionalität integriert ist.

5
James Anderson

Unten finden Sie T-SQL zum Löschen alter Sicherungen von einem Speicherort mit dem Alter N:

EXECUTE master.dbo.xp_delete_file    
    0,
    N'**FILEPATH OF OLD BACKUPS LOCATION**',
    N'bak',
    N'**DATE BEFORE WHICH YOU DONT WANT TO KEEP BACKUPS** T **TIME**',
    1 ;
1
dsingh