Forums Neueste Beiträge
 

xp_delete_file - gibt's dazu 'ne Dokumentation?

02/04/2009 - 09:00 von Christa Kurschat | Report spam
Hallo NG,

SQL 2005 Standard SP2, Win2003 64-bit Standard, SP2

Ich habe ein Probem mit oben genannter undokumentierter Prozedur (Ich finde
jedenfalls keine Dokumentation).

ich habe in meinem Sicherungsjob einen manuellen Cleanup-Step eingerichtet.
declare @Datum varchar(8)
set @Datum = convert(varchar(8),dateadd(dd,-1,getdate()),112)
EXECUTE master.dbo.xp_delete_file
0,N'G:\Bandsicherung\MeineSicherung',N'bak',@Datum

Wenn ich den Job manuell starte, wird alles richtig ausgeführt und die alte
Sicherungsdatei gelöscht. Per Agent ausgeführt sagt er zwar, der Step war
erfolgreich, aber das alte Sicherungsfile wird nicht gelöscht.
Der Agent und ich haben dasselbe Konto.

So wie ich die Prozedur verstehe, löscht er alles in dem Verzeichnis, was
gleich alt oder àlter ist als das angegebene Datum?
Oder habe ich das falsch verstanden?

Gruß
Christa
Access-FAQ: http://www.donkarl.com
SQL-Server-FAQ: www.sqlfaq.de
InsideSql: www.insidesql.org
 

Lesen sie die antworten

#1 Elmar Boye
02/04/2009 - 10:43 | Warnen spam
Hallo Christa,

Christa Kurschat schrieb:
SQL 2005 Standard SP2, Win2003 64-bit Standard, SP2

Ich habe ein Probem mit oben genannter undokumentierter Prozedur (Ich
finde jedenfalls keine Dokumentation).



Sie ist undokumentiert, da nur für interne Zwecke von Microsoft
gedacht - Einsatzbereich sind z. B. die Wartungsplàne.

Weswegen man sie mit der nötigen Vorsicht einsetzen muß,
da sie von Version zu Version anders sein kann (oder auch
ganz verschwinden) - geben tut es sie seit langem.

Die Funktionsweise kann man sich durch die Skripte anzeigen
lassen, wie es z. B. hier gezeigt wird:
<URL:http://sqlblog.com/blogs/andy_leona...e.aspx>

(die umstàndliche Datumsberechnung dort kriegst Du sicher besser hin).

EXECUTE master.dbo.xp_delete_file
0,N'G:\Bandsicherung\MeineSicherung',N'bak',@Datum



Es existiert ein vierter Parameter (oben zu sehen), der angibt,
ob Unterverzeichnisse durchsucht werden sollen, den sollte man
mit 0 (nein) oder 1 (ja) angeben.

Wenn ich den Job manuell starte, wird alles richtig ausgeführt und die
alte Sicherungsdatei gelöscht. Per Agent ausgeführt sagt er zwar, der
Step war erfolgreich, aber das alte Sicherungsfile wird nicht gelöscht.



Da dürfte ein Rechteproblem vorliegen
Oder wenn "G:" ein gemapptes Netzwerk-Verzeichnis ist,
das es unter dem Konto nicht vorhanden ist.

Im Zweifelsfalle: Mit dem SysInternals FileMonitor
<URL:http://technet.microsoft.com/de-de/...2.aspx>
kann man sehen, auf was zuggegriffen wird.

Der Agent und ich haben dasselbe Konto.



Der Agent und der SQL Server auch?

So wie ich die Prozedur verstehe, löscht er alles in dem Verzeichnis,
was gleich alt oder àlter ist als das angegebene Datum?



Das tut sie, je nach Parameter.
Sie implementiert im wesentlichen den Schritt des Cleanup Wartungsplans.

Gruß Elmar

Ähnliche fragen