19077
Goto Top

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 ??

Content-Key: 24659

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

Printed on: April 20, 2024 at 03:04 o'clock

Member: derCaptain
derCaptain Jan 27, 2006 at 14:03:16 (UTC)
Goto Top
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
Member: MadMax
MadMax Jan 29, 2006 at 00:29:05 (UTC)
Goto Top
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
Mitglied: 19077
19077 Jan 29, 2006 at 09:51:36 (UTC)
Goto Top
Hallo MadMax,

hmm, wenn dieser Aufruf wirklich die gesamte Datenbank sichert, wieso ist es dann so, das eine Sicherung von September vorigen Jahres 9GB hat, die von Januar 2006 hat 7GB und die von Freitag hat nur noch rund 2GB ???? Ist das normal bei MS-SQL ???

Der SQL-Server Web Data Administrator geht auch für die MSDE ??? Setzt der irgendetwas voraus (IIS zb.) ?

Danke für Deine Antwort !!!!

BP
Member: MadMax
MadMax Jan 29, 2006 at 16:31:29 (UTC)
Goto Top
Hallo Henryk,

für eine inkrementelle Sicherung wären die genannten Größen aber gewaltig (ok, ich weiß nicht, wie oft Du sicherst face-smile). 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 face-smile

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