Avatar billede todoonada Nybegynder
22. januar 2004 - 09:33 Der er 9 kommentarer og
3 løsninger

Backup af MSSQL

Hey der!

Jeg har efterhånden MSSQL server med rimelig mange databaser, og vil gerne lave backup af alle dem jeg har lavet og ikke de indbyggede. Er der en nemmere måde end at lave en schedule for hver enkelt database ? Det hele skal ned på en DAT streamer.

På Forhånd tak
Avatar billede arne_v Ekspert
22. januar 2004 - 09:53 #1
Tja - du kunne jo lave en lille SP som loopede over
databaserne.
Avatar billede ldanielsen Nybegynder
22. januar 2004 - 09:54 #2
Du kan nøjes med at lave backup af data- og logfilerne (dbNavn.mdf og dbNavn.ldf). Der er blot det problem at databasen skal være lukket for at backupprogrammet kan tage dem, som regel.

Jeg gør dette:
En bat-fil sættes til at køre om natten (eller et andet tidspunkt databasen ikke bruges). Den lukker sqlserveren, kopierer filerne, og starter sqlserveren igen:

net stop sqlserveragent
net stop mssqlserver

C:
CD Program Files\Microsoft SQL Server\MSSQL\Data

Copy dbNavn.mdf C:\Logs-backup\backup-SQL\Data\ /Y
Copy dbNavn.ldf C:\Logs-backup\backup-SQL\Data\ /Ynet start mssqlserver

net start sqlserveragent

den kan køres med scheduled tasks.

Så lader jeg backup-programmet tage backup af kopierne
Avatar billede ldanielsen Nybegynder
22. januar 2004 - 09:55 #3
Hov, der manglede en linie:

net start mssqlserver
Avatar billede arne_v Ekspert
22. januar 2004 - 09:59 #4
Det kan man, men jeg vil nok anbefale brug af BACKUP inde i SQLServer.
Avatar billede zedios Nybegynder
22. januar 2004 - 10:02 #5
En mulighed er at finde database navnene i sysdatabases og så loope igennem med en cursor og dynamisk SQL - noget i stil med nedenstående:
(hvis du gerne vil eksludere nogle databaser så kan du bare gøre det i where delen når du opretter cursoren)
(myBackupDevice er et device du har oprettet til din DAT streamer ..)

DECLARE @dbName AS sysname
DECLARE @strSQL nvarchar(4000)

DECLARE dbCurs CURSOR FOR
SELECT [name] FROM master.dbo.sysdatabases

OPEN dbCurs
FETCH NEXT FROM dbCurs INTO @dbName

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @strSQL = 'BACKUP DATABASE ' +@dbName+ ' TO myBackupDevice'   
    EXEC @strSQL
    FETCH NEXT FROM dbCurs INTO @dbName
END

CLOSE dbCurs
DEALLOCATE dbCurs
GO
Avatar billede zedios Nybegynder
22. januar 2004 - 10:03 #6
Glemte lige delen med Schedule - her kan du bare pakke SQL'en ovenfor ind i et et job på SQL Server som du så skedulere til det ønskede interval.
Avatar billede todoonada Nybegynder
22. januar 2004 - 10:04 #7
arne_v:
Hvad mener du med SP ? Og backup inde i SQLserver er en rimelig kedelig affærre når man skal lave for 20 stykker :\
Avatar billede zedios Nybegynder
22. januar 2004 - 10:09 #8
Ups!

Fandt en lille fejl i scriptet ovenfor:
"EXEC @strSQL" skal skiftes ud med "EXEC(@strSQL)"
Avatar billede arne_v Ekspert
22. januar 2004 - 10:24 #9
SP = Stored Procedure

Du kan jo automatisere processen.

Zedios har vist mere detaljeret hvordan man gør.
Avatar billede todoonada Nybegynder
22. januar 2004 - 13:49 #10
ldanielsen:
Jeg har prøvet at gøre som din bat fil gør og kopieret det over på en fuldstændig ens MSSQL server men den finder ikke filerne og tilføjer dem heller ik i database træet.
Avatar billede ldanielsen Nybegynder
22. januar 2004 - 14:42 #11
du skal lægge filerne i data-mappen, og derefter fra Enterprise Manager højreklikke på Databases, vælge All Tasks > Attach Database. Peg derefter på mdf-filen og klik ok.

Vær opmærksom på at stien til datamappen skal være præcis den samme som der hvor filerne kommer fra, ellers kan den ikke finde logfilen
Avatar billede todoonada Nybegynder
22. januar 2004 - 15:10 #12
Mange tak for hjælpen alle sammen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester