19077
27.01.2006, aktualisiert am 29.01.2006
11473
4
0
MS-SQL7 Datenbank sichern per Batch
Hi,
kann mir jemand sagen, wie man bei einem MS-SQL-Server 7 (bzw. MSDE) die Datenbank(en) per Batch komplett (!) sichern kann ??
Momentan läuft zwar eine Batch bei uns (manuell auszuführen ;() aber die macht scheinbar nur ein incrementelles Backup (die files werden immer kleiner ...).
der momentane Aufruf lautet:
OSQL -Uuser -Ppassword -n -Q "BACKUP DATABASE model to DISK = 'Lwk:\MSSQL\Backup\model.bak'"
Kann mir jemand helfen ??
Thx
BP158
PS: bekommt man den Enterprisemanager auch für die MSDE ??
kann mir jemand sagen, wie man bei einem MS-SQL-Server 7 (bzw. MSDE) die Datenbank(en) per Batch komplett (!) sichern kann ??
Momentan läuft zwar eine Batch bei uns (manuell auszuführen ;() aber die macht scheinbar nur ein incrementelles Backup (die files werden immer kleiner ...).
der momentane Aufruf lautet:
OSQL -Uuser -Ppassword -n -Q "BACKUP DATABASE model to DISK = 'Lwk:\MSSQL\Backup\model.bak'"
Kann mir jemand helfen ??
Thx
BP158
PS: bekommt man den Enterprisemanager auch für die MSDE ??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 24659
Url: https://administrator.de/contentid/24659
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
4 Kommentare
Neuester Kommentar
Bei uns sieht das ganze folgendermaßen aus. Das Script ist noch von meinem Vorgänger und ich hab mich noch nicht damit auseinandergesetzt aber es funktioniert bis jetz fehlerfrei.
Eine Batch, die folgenden aufruf beinhaltet, wird vom jeweiligen Server ausgeführt:
OSQL -S %MSSQL_SERVER% -E -n -i "\PFAD\Backup_DB.sql" -p -a 8192 > "ZIEL DER LOGDATEI"
Die Backup_DB.sql hat folgenden Inhalt:
CLOSE rs_cursor
deallocate rs_cursor
declare @dbname as varchar(40)
declare @msgdb as varchar(40)
declare @dbbkpname as varchar(60)
declare @dbbkpsetname as varchar(60)
declare @dbfilename as varchar(60)
declare @currdate as varchar(8)
declare @currtime as varchar(8)
DECLARE @hostn as varchar(40)
SELECT @hostn = HOST_NAME()
declare rs_cursor CURSOR for select name from master.dbo.sysdatabases
open rs_cursor
Fetch next from rs_cursor into @dbname
IF @@FETCH_STATUS <> 0 PRINT '<<db>>'
print '----------------------------------------------------------------------'
select @msgdb = 'DB Backup with Format: ' + @dbname
print @msgdb
select @dbbkpname = @dbname + '.dat'
select @currdate = CONVERT(char(12), GETDATE(), 5)
select @currtime = CONVERT(char(12), GETDATE(), 8)
select @dbbkpsetname = 'Full DBBackup of ' + @dbname + ' ' + @currdate + ' ' + @currtime
select @dbfilename = N'\BACKUPPFAD\'+@HOSTN+'\'+@dbname+'_'+@currdate+'.bak'
print 'File Name: ' + @dbbkpname
print 'Label: ' + @dbbkpsetname
backup database @dbname TO DISK = @dbfilename WITH NAME = @dbbkpsetname, NOUNLOAD
Fetch next from rs_cursor into @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
if @dbname <> 'tempdb' BEGIN
print '----------------------------------------------------------------------'
select @msgdb= 'DB Backup with Append: ' + @dbname
print @msgdb
select @dbbkpname = @dbname + '.dat'
select @currdate = CONVERT(char(12), GETDATE(), 5)
select @currtime = CONVERT(char(12), GETDATE(), 8)
select @dbbkpsetname = 'Full DBBackup of ' + @dbname + ' ' + @currdate + ' ' + @currtime
select @dbfilename = N'\BACKUPPFAD\'+@HOSTN+'\'+@dbname+'_'+@currdate+'.bak'
print 'File Name: ' + @dbbkpname
print 'Label: ' + @dbbkpsetname
backup database @dbname TO DISK = @dbfilename WITH NOINIT, NAME = @dbbkpsetname, NOUNLOAD, SKIP
END
FETCH NEXT FROM rs_cursor INTO @dbname
END
print '----------------------------------------------------------------------'
PRINT 'DB tempdb was skipped...'
PRINT 'Backup Job Completed..... ;)'
CLOSE rs_cursor
deallocate rs_cursor
GO
Ich hoffe, das hilft Dir weiter
Eine Batch, die folgenden aufruf beinhaltet, wird vom jeweiligen Server ausgeführt:
OSQL -S %MSSQL_SERVER% -E -n -i "\PFAD\Backup_DB.sql" -p -a 8192 > "ZIEL DER LOGDATEI"
Die Backup_DB.sql hat folgenden Inhalt:
CLOSE rs_cursor
deallocate rs_cursor
declare @dbname as varchar(40)
declare @msgdb as varchar(40)
declare @dbbkpname as varchar(60)
declare @dbbkpsetname as varchar(60)
declare @dbfilename as varchar(60)
declare @currdate as varchar(8)
declare @currtime as varchar(8)
DECLARE @hostn as varchar(40)
SELECT @hostn = HOST_NAME()
declare rs_cursor CURSOR for select name from master.dbo.sysdatabases
open rs_cursor
Fetch next from rs_cursor into @dbname
IF @@FETCH_STATUS <> 0 PRINT '<<db>>'
print '----------------------------------------------------------------------'
select @msgdb = 'DB Backup with Format: ' + @dbname
print @msgdb
select @dbbkpname = @dbname + '.dat'
select @currdate = CONVERT(char(12), GETDATE(), 5)
select @currtime = CONVERT(char(12), GETDATE(), 8)
select @dbbkpsetname = 'Full DBBackup of ' + @dbname + ' ' + @currdate + ' ' + @currtime
select @dbfilename = N'\BACKUPPFAD\'+@HOSTN+'\'+@dbname+'_'+@currdate+'.bak'
print 'File Name: ' + @dbbkpname
print 'Label: ' + @dbbkpsetname
backup database @dbname TO DISK = @dbfilename WITH NAME = @dbbkpsetname, NOUNLOAD
Fetch next from rs_cursor into @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
if @dbname <> 'tempdb' BEGIN
print '----------------------------------------------------------------------'
select @msgdb= 'DB Backup with Append: ' + @dbname
print @msgdb
select @dbbkpname = @dbname + '.dat'
select @currdate = CONVERT(char(12), GETDATE(), 5)
select @currtime = CONVERT(char(12), GETDATE(), 8)
select @dbbkpsetname = 'Full DBBackup of ' + @dbname + ' ' + @currdate + ' ' + @currtime
select @dbfilename = N'\BACKUPPFAD\'+@HOSTN+'\'+@dbname+'_'+@currdate+'.bak'
print 'File Name: ' + @dbbkpname
print 'Label: ' + @dbbkpsetname
backup database @dbname TO DISK = @dbfilename WITH NOINIT, NAME = @dbbkpsetname, NOUNLOAD, SKIP
END
FETCH NEXT FROM rs_cursor INTO @dbname
END
print '----------------------------------------------------------------------'
PRINT 'DB tempdb was skipped...'
PRINT 'Backup Job Completed..... ;)'
CLOSE rs_cursor
deallocate rs_cursor
GO
Ich hoffe, das hilft Dir weiter
Hallo Henryk,
der Aufruf sichert die ganze Datenbank und nicht nur inkrementell.
Den Enterprise Manager gibts nicht für die MSDE, aber dafür kann man bei MS den SQL Server Web Data Administrator runterladen, mit dem man auch ein paar administrative Sachen erledigen kann. Den gibts unter: http://www.microsoft.com/downloads/details.aspx?familyid=C039A798-C57A- ...
Gruß, Mad Max
der Aufruf sichert die ganze Datenbank und nicht nur inkrementell.
Den Enterprise Manager gibts nicht für die MSDE, aber dafür kann man bei MS den SQL Server Web Data Administrator runterladen, mit dem man auch ein paar administrative Sachen erledigen kann. Den gibts unter: http://www.microsoft.com/downloads/details.aspx?familyid=C039A798-C57A- ...
Gruß, Mad Max
Hallo Henryk,
für eine inkrementelle Sicherung wären die genannten Größen aber gewaltig (ok, ich weiß nicht, wie oft Du sicherst ). Und für eine inkrementelle Sicherung bräuchtest Du noch den Parameter "DIFFERENTIAL" im Backupbefehl.
Dann solltest Du vielleicht mal prüfen, wo die Daten sind. Vielleicht waren just zum Sicherungszeitpunkt massive Datenoperationen und das TP aufgebläht. Spiel doch mal eine gesicherte DB ein und schau mal nach nach den Daten.
Und ja, der Web Data Admin geht auch für MSDE. Die MSDE ist ja auch nur ein SQL Server. Enterprise Manager würde auch gehen, aber den gibts halt nur beim kompletten SQL Server, kostet halt
Der Web Data Admin bringt für den Fall, daß kein IIS vorhanden ist, einen kleinen Websever mit.
Noch ein Tip: Wenn der Admin beim Login hängt, mußt Du die Datei C:\Programme\Microsoft SQL Server Tools\Microsoft SQL Web Data Administrator\Web\Web.config bearbeiten und die Zeile:
<<x>webControls clientScriptsLocation="aspnet_client/system_web/1_1_4322/"/>
ändern zu:
<<x>webControls clientScriptsLocation="/aspnet_client/system_web/1_1_4322/"/>
Gruß, Mad Max
für eine inkrementelle Sicherung wären die genannten Größen aber gewaltig (ok, ich weiß nicht, wie oft Du sicherst ). Und für eine inkrementelle Sicherung bräuchtest Du noch den Parameter "DIFFERENTIAL" im Backupbefehl.
Dann solltest Du vielleicht mal prüfen, wo die Daten sind. Vielleicht waren just zum Sicherungszeitpunkt massive Datenoperationen und das TP aufgebläht. Spiel doch mal eine gesicherte DB ein und schau mal nach nach den Daten.
Und ja, der Web Data Admin geht auch für MSDE. Die MSDE ist ja auch nur ein SQL Server. Enterprise Manager würde auch gehen, aber den gibts halt nur beim kompletten SQL Server, kostet halt
Der Web Data Admin bringt für den Fall, daß kein IIS vorhanden ist, einen kleinen Websever mit.
Noch ein Tip: Wenn der Admin beim Login hängt, mußt Du die Datei C:\Programme\Microsoft SQL Server Tools\Microsoft SQL Web Data Administrator\Web\Web.config bearbeiten und die Zeile:
<<x>webControls clientScriptsLocation="aspnet_client/system_web/1_1_4322/"/>
ändern zu:
<<x>webControls clientScriptsLocation="/aspnet_client/system_web/1_1_4322/"/>
Gruß, Mad Max