MSSQL - Backup per Script entfernen?
Möglichkeit in T-SQL gesucht um bestehendes Backup wieder zu entfernen
Ich habe vor, die SQL-Datenbanken vor einem Setups zu sichern und im Fehlerfall wiederherzustellen. Dies funktioniert mit "BACKUP DATABASE" und "RESTORE DATABASE" schon recht gut. Allerdings stehe ich nun vor dem Problem, dass ich nicht weiß, wie ich nach dem Abschluss aller Arbeiten das Backup-File wieder entferne.
Gibt es da irgendeine Möglichkeit, dies über das Script zu tun?
Ich habe vor, die SQL-Datenbanken vor einem Setups zu sichern und im Fehlerfall wiederherzustellen. Dies funktioniert mit "BACKUP DATABASE" und "RESTORE DATABASE" schon recht gut. Allerdings stehe ich nun vor dem Problem, dass ich nicht weiß, wie ich nach dem Abschluss aller Arbeiten das Backup-File wieder entferne.
Gibt es da irgendeine Möglichkeit, dies über das Script zu tun?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 57753
Url: https://administrator.de/contentid/57753
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
4 Kommentare
Neuester Kommentar
da du ja offenbar mehrere datenbanken hast und die im allgemeinen auch gerade im betrieb nicht unwichtig sind, solltest du vielleicht ganz allgemein im enterprise manager einen backup-job einrichten... dem kannst du dann ganz auch ganz einfach sagen, dass das vorherige backup überschieben wird, oder beispielsweise jeweils eine bestimmte anzahl von backups gespeichert werden sollen (zb die letzten 5...)
solltest du aber an deiner lösung festhalten wollen, wüsste ich gerne, wie und wo du dein script laufen lassen willst...
- direkt im query analyser
- als batch- oder vb-script
- als anweisung in einem msi-paket....
gruss chris
solltest du aber an deiner lösung festhalten wollen, wüsste ich gerne, wie und wo du dein script laufen lassen willst...
- direkt im query analyser
- als batch- oder vb-script
- als anweisung in einem msi-paket....
gruss chris
hi chris
naja, mal vorausgesetzt, dass die meisten setup-pakete aus verschiedensten gründen nur als administrator ausgeführt werden können und in den netzwerken deiner kunden auf allen rechnern jeweils das administrator-kennwort gleich ist, könntest du die lösch-routine einfach über einen befehl auf der kommandozeile laufen lassen, also zb: del /F /Q c:\programme\mssql\backup\*.bak ... je nachdem, wie die sql-server deiner kunden eingerichtet sind....
wenn du dein setup-programm aber nicht auf dem selben rechner ausführst, auf dem deine kunden ihren sql-server laufen lassen, hast du aber noch das problem, das du die befehle "BACKUP DATABASE" und "RESTORE DATABASE" nicht ohne weiteres auf diesen rechnern laufen lassen kannst... du weisst wahrscheinlich auch noch gar nicht, wie jeweils die datenbank deines kunden heisst - sprich, du musst alle datenbanken sichern, die auf dem server deines kunden laufen
warum willst du denn vor dem setup deines programms alle datenbanken sichern und wie willst du erkennen, ob dein programm tatsächlich korrekt installiert wurde, bzw... woran erkennst du einen fehler, der das zurückspielen der backups erfordert?
und warum scheint es dir nötig, die datenbanken zu sichern, wenn du dein programm gar nicht auf dem selben rechner installierst, wo die datenbanken laufen?
lg chris
naja, mal vorausgesetzt, dass die meisten setup-pakete aus verschiedensten gründen nur als administrator ausgeführt werden können und in den netzwerken deiner kunden auf allen rechnern jeweils das administrator-kennwort gleich ist, könntest du die lösch-routine einfach über einen befehl auf der kommandozeile laufen lassen, also zb: del /F /Q c:\programme\mssql\backup\*.bak ... je nachdem, wie die sql-server deiner kunden eingerichtet sind....
wenn du dein setup-programm aber nicht auf dem selben rechner ausführst, auf dem deine kunden ihren sql-server laufen lassen, hast du aber noch das problem, das du die befehle "BACKUP DATABASE" und "RESTORE DATABASE" nicht ohne weiteres auf diesen rechnern laufen lassen kannst... du weisst wahrscheinlich auch noch gar nicht, wie jeweils die datenbank deines kunden heisst - sprich, du musst alle datenbanken sichern, die auf dem server deines kunden laufen
warum willst du denn vor dem setup deines programms alle datenbanken sichern und wie willst du erkennen, ob dein programm tatsächlich korrekt installiert wurde, bzw... woran erkennst du einen fehler, der das zurückspielen der backups erfordert?
und warum scheint es dir nötig, die datenbanken zu sichern, wenn du dein programm gar nicht auf dem selben rechner installierst, wo die datenbanken laufen?
lg chris
Hallo Chris,
mit der Systemprozedur xp_cmdshell kannst Du BS-Befehle auf dem Server ausführen, also z.B.
Das sollte Deine Aufgabe erledigen.
Unter SQL Server 2005 mußt Du allerdings erst mittels Serveroption die Benutzung der Prozedur erlauben, in früheren Versionen gab es diese Option noch nicht:
Gruß, Mad Max
mit der Systemprozedur xp_cmdshell kannst Du BS-Befehle auf dem Server ausführen, also z.B.
exec xp_cmdshell 'del C:\xyz.bak'
Das sollte Deine Aufgabe erledigen.
Unter SQL Server 2005 mußt Du allerdings erst mittels Serveroption die Benutzung der Prozedur erlauben, in früheren Versionen gab es diese Option noch nicht:
exec sp_configure 'show advanced options', 1
go
reconfigure
go
exec sp_configure 'xp_cmdshell', 1
go
reconfigure
go
Gruß, Mad Max