uneverno
Goto Top

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?

Content-ID: 57753

Url: https://administrator.de/contentid/57753

Ausgedruckt am: 25.11.2024 um 21:11 Uhr

dievonnebenan
dievonnebenan 05.05.2007 um 18:14:02 Uhr
Goto Top
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
UNeverNo
UNeverNo 05.05.2007 um 21:45:14 Uhr
Goto Top
Mhh wie bin ich denn da auf Mehrzahl gekommen?

Es soll immer nur von einer Datenbank ein Backup gemacht werden, aber das bei verschiedenen Kunden. Diese haben z.T. aber nur wenig Ahnung vom SQL-Server, entsprechend fällt die Idee eines Backup-Scripts leider flach.

Daher wollte ich es aus Installscript (Installshield) heraus aus einer VB-Dll aufrufen. Das funktioniert wie gesagt ja auch schon, nur scheint es in T-SQL kein Befehl zum löschen zu geben und über die OS-Ebene geht es auch nicht, da der SQL-Server auf einem anderen Rechner läuft, als dort, wo das Setup eingespielt wird und entsprechend die Berechtigungen fehlen...

Grüße, auch Chris ;)
dievonnebenan
dievonnebenan 06.05.2007 um 09:03:25 Uhr
Goto Top
hi chris face-smile

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
MadMax
MadMax 10.05.2007 um 12:03:48 Uhr
Goto Top
Hallo Chris,

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