Ostatnio musiałem przenieść całą zawartość SQL Servera 2000 na inną maszyne. Od samego początku napotykałem problemy ale dzięki pomocy uzyskanej na forum Codeguru.pl i GoldenLine.pl zebrałem odpowiednią wiedzę, którą chce przedstawić poniżej.
1. Wykonanie kopii zapasowej dziennika transakcji za pomocą polecenia:
1 | BACKUP LOG NazwaBazyDanych TO DISK= 'C:\NazwaBazyDanych_LogBackup.trn' |
Wykonujemy to dla wszystkich baz danych umieszczonych na serwerze.
(Odpowiedni skrypt, który automatycznie wykonuje backup logu po „dopracowaniu” przedstawię wkrótce w osobnej poradzie.
2. Wykonanie kopii zapasowej bazy danych.
W celu wykonania kopii zapasowych bazy danych można użyć polecenia:
1 | BACKUP DATABASE NazwaBazyDanych TO DISK = C:\NazwaBazyDanych_Backup.bak ' WITH NOFORMAT, INIT, NAME = N' NazwaBazyDanych - Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 100; |
Osobiście polecam użycie skryptu, który automatycznie wykona backup wszystkich baz danych zawartych na serwerze.
Skrypt taki napisałem , jego opis jak i kod umieściłem w poradzie:
Jak wykonać automatyczny backup i „zip” baz w MS SQL Server 2000 ?
(Wersja dla MS SQL Server 2005/2008 :
Jak wykonać automatyczny backup i „zip” baz w MS SQL Server 2005/2008 ? )
3. Na serwerze źródłowym należy uruchomić skrypt przedstawiony poniżej.
Wygeneruje on prosty kod służący do założenia pustych baz danych na serwerze docelowym.
Po uruchomieniu kopiujemy wygenerowany kod i uruchamiamy na serwerze docelowym
10 | DECLARE @DBName varchar (255) |
13 | DECLARE DB_Cursor CURSOR FOR |
15 | DATABASE_NAME = db_name(s.dbid) |
17 | [master].[dbo].[sysdatabases] s |
20 | db_name(s.dbid) not in ('master ',' model ',' tempdb ',' msdb ') |
29 | FETCH NEXT FROM DB_Cursor INTO @DBName |
30 | WHILE @@FETCH_STATUS = 0 |
32 | PRINT ' CREATE DATABASE [ ' + @DBName + ' ] ' |
34 | FETCH NEXT FROM DB_Cursor INTO @DBName |
4. Na serwerze docelowym odtwarzamy stworzone w pkt 2. kopie baz danych, pamiętając o tym aby zaznaczyć opcję nadpisania istniejących baz danych (overwrite the existing database (WITH REPLACE).
4 komentarze
roku · 11 września 2010 o 13:06
nie robienie backupu bazy master i msdb to DUŻY błąd
Dariusz Brejnak · 11 września 2010 o 13:15
Celowo jest wyłączony backup tych baz. Zawsze można włączyć. Jest to przykład, który można dostosować do swoich potrzeb. Mnie to służyło do przeniesienia danych na inny serwer z innymi bazami, więc nie mogłem podmienić master i msdb.
roku · 11 września 2010 o 13:50
msdb jaknajbardziej sie przenosi trzeba tylko potem update zrobic na tabeli z jobami w polu odpowiadającym za serwer docelowy (nie mam sql pod reką a nie chce zgadywac jak to pole sie nazywa)
Możliwość komentowania została wyłączona.