Avatar billede misbruger Nybegynder
13. maj 2005 - 12:15 Der er 16 kommentarer og
1 løsning

Backup af SQL uden smart software

Jeg har lige installeret en MS SQL 2K

Alle datafilerne ligger i en mappe under d-drevet
Alle log filerne ligger i en mappe uder c-drevet.

Jeg vil meget gerne tage en daglig backup (evt. incremental) af alle databaser på servere.

Mit problem er umiddelbart at jeg ikke har noget backup software med en specialiceret agent til SQL Server.

Er det muligt blot at lave en fil backup af Data og Log filerne gennem f.eks NT Backup ?
Vil man kunne restore databaserne udfra filerne, uden at skulle stå på et ben med hønseæg i hånderne i flere timer ?
Andet ?

NB. Jeg benytter tape drev.

På forhånd tak!

(Jeg sørger også svar på samme spørgsmål omkring en MySQL 4.1 installation, men hvis der ikke kan svares på det her, opretter jeg selvf. bare samme spørgsmål i den rette kategori)
Avatar billede j_jorgensen Nybegynder
13. maj 2005 - 12:21 #1
Der ligger en OK backupklient i selve Adm. manageren...har du kigget på den?
Avatar billede ldanielsen Nybegynder
13. maj 2005 - 12:34 #2
Ang. MSSQL

Du kan godt back'e filerne op, men serveren skal stoppes mens det sker. Men jeg vil da anbefale at bruge backup-funktionen:

BACKUP DATABASE [Databasenavn] TO  DISK = N'D:\data\MSSQL\BACKUP\Databasenavn.BAK' WITH  INIT ,  NOUNLOAD ,  NAME = N'tlcdanmark',  NOSKIP ,  STATS = 10,  NOFORMAT

Den skal bare fyres af til serveren, og så kan du efterfølgende kopiere Databasenavn.BAK' over på dit bånd.

Ang Restore: Det gør vi da heldigvis så sjældent, at det aldrig bliver en vane, men det går fint med begge metoder.
Avatar billede ldanielsen Nybegynder
13. maj 2005 - 12:35 #3
Se Books Online for nærmere forklaring på BACKUP DATABASE kommandoen
Avatar billede misbruger Nybegynder
13. maj 2005 - 12:45 #4
...nu havde jeg forstillet mig at backup'en skulle køre unattended, dvs. at jeg ikke er interesseret i at skulle kører et script for hver database for at lave backup'en.

Er der ikke en mulighed for at lave en batch på alle databaserne (evt. over i .bak filer), en timer før min fil backup rutine kører (kl. 02:00 hver nat).

Dermed også ment at jeg ikke ønsker at skulle ændre på mit batch job (script), for hver gang der oprettes en ny database på serveren. De skal bare automatisk blive includeret.
Avatar billede ldanielsen Nybegynder
13. maj 2005 - 13:16 #5
Dette er da et bud:

use master

SELECT name FROM sysdatabases WHERE name not in ('master', 'model', 'msdb', 'tempdb')

Det kan sikkert gøres smartere, men det har jeg ikke lige styr på ...
Avatar billede -psycho- Nybegynder
17. maj 2005 - 02:55 #6
nu siger du ikke noget om hvad det er for en mssql du har msde eller personal/enterprise. jeg ved ikke om jobs virker i msde men du kan da prøve :).

Hvis du har personal/enterprise så kan du bruge enterprise manageren til at lave stored proc og job i men da jeg ikke ved det for du det som t-sql.

Først stored proc
-------------------------------------------------------------------------------

USE master

CREATE PROCEDURE sp_backup AS

DECLARE @dbname nvarchar(50)
DECLARE dbnames CURSOR FOR SELECT name FROM sysdatabases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb')

OPEN dbnames
FETCH NEXT FROM dbnames INTO @dbname

WHILE @@FETCH_STATUS = 0
BEGIN
    BACKUP DATABASE @dbname TO DISK = 'c:\' + @dbname + '.BAK' WITH  INIT ,  NOUNLOAD ,  NAME = N'tlcdanmark',  NOSKIP ,  STATS = 10,  NOFORMAT

    FETCH NEXT FROM dbnames INTO @dbname
END

CLOSE dbnames
DEALLOCATE dbnames
GO

-------------------------------------------------------------------------------
Og så laver vi et job.. For at job virker skal SQL Server Agent være kørende og som sagt ved jeg ikke om det virker på msde.
-------------------------------------------------------------------------------

use msdb

EXEC sp_add_job
    @job_name = 'Backup'

EXEC sp_add_jobstep
    @job_name = 'Backup',
    @step_name = 'backup',
    @subsystem = 'TSQL',
        @command = 'EXEC sp_backup'

EXEC sp_add_jobschedule
    @job_name = 'Backup',
    @name = 'ScheduledBackup',
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 20000

EXEC sp_add_jobserver
    @job_name = 'Backup',
    @server_name = '(Local)'
Avatar billede -psycho- Nybegynder
17. maj 2005 - 02:59 #7
der er sikkert en smartere måde hvad ved jeg :)
Avatar billede misbruger Nybegynder
17. maj 2005 - 13:24 #8
Ser det ser ikke helt dumt ud. :)

Det er en MS SQL Standard Edt.

1. Skal sp_Backup ligge i master databasen ?
2. I sp_Backup står der: NAME = N'tlcdanmark', Hvad er denne del af kommandoen ?
Avatar billede misbruger Nybegynder
17. maj 2005 - 13:27 #9
ups...

1. Det står jo lige ovenover, at den skal ind og ligge i master
Avatar billede ldanielsen Nybegynder
17. maj 2005 - 14:07 #10
N'tlcdanmark' er en stump af min private kode som jeg ikke fik rettet, det skal være databasenavnet
Avatar billede -psycho- Nybegynder
17. maj 2005 - 15:29 #11
Det er navnet som  ldanielsen siger, copy/pasted bare lige hans backup linie :).
Avatar billede misbruger Nybegynder
18. maj 2005 - 12:52 #12
Jeg har lige prøvet at oprette sp'en, og får følgende fejl...

Error 170: Line 11: Incorrect syntax near '+'.

(Hvor linie 11 er "BACKUP DATABASE @dbname TO DISK...")
Avatar billede wizdom Nybegynder
24. maj 2005 - 10:09 #13
I Enterprise manager / vælg Database/all task/maintanence plan (følg guiden)
Her kan du definere hvilke databaser der skal laves backup af og hvor ofte...

Håber du kan bruge det svar ;)

/WizDom
Avatar billede misbruger Nybegynder
25. maj 2005 - 13:05 #14
Hi wizdom

Det skal jo slet ikke være så svært (scripts o.a.)

Tak skal du have!
Avatar billede wizdom Nybegynder
26. maj 2005 - 07:12 #15
;) Simplicity does it ;)
Avatar billede misbruger Nybegynder
26. maj 2005 - 09:50 #16
Suplementære spørgsmål.....

1. Er det nødvendigt at tage backup at Transaction log, eller er det nok kun at tage Data ?

2. Hvorledes indlæser man disse .bak filer for at restore igen ?
(at være på forkant :)
Avatar billede wizdom Nybegynder
13. september 2005 - 19:21 #17
LOOONG time no see ;) undskyld har været på for mange kurser hehe.....

Når du skal restore gør du bare på "næsten" samme måde...

Du højreklikker simpelthen bare på den DB du skal restore, og klikker så, all task og så, Restore Database, der kan du så restore fra... chk dato for restore...
Du finder hurtigt ud af hvordan det fungerer ;)  (ellers skriv)

og hvad angår LOGs, så er det kun for din egen skyld, hvis
du har behov for at gemme netop den log...

Hej fra WizDom
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