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:
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:
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
-------------------------------------------------------------------------------------- -- Script : AutomaticCreatedDatabases.sql -- Author : Dariusz Brejnak aka 'DBSoft (c) 2010 -- Created : 2010-08-26 -- Modified : 2010-08-26 -- Description: script designed to automatically create the databases on the SQL server. ---------------------------------------------------------------------------------------- USE master GO DECLARE @DBName varchar(255) DECLARE @DB_Fetch int -- Declare Cursor DECLARE DB_Cursor CURSOR FOR SELECT DATABASE_NAME = db_name(s.dbid) FROM [master].[dbo].[sysdatabases] s WHERE ( -- exclude master, model, tempdb, msdb or other db_name(s.dbid) not in ('master','model','tempdb','msdb') ) -- Not multiple line GROUP BY s.dbid ORDER BY DATABASE_NAME PRINT '-- AutomaticCreatedDatabases.sql script ' PRINT '-- generated:' PRINT '' OPEN DB_Cursor FETCH NEXT FROM DB_Cursor INTO @DBName WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'CREATE DATABASE [' + @DBName + ']' PRINT 'GO' FETCH NEXT FROM DB_Cursor INTO @DBName END CLOSE DB_Cursor DEALLOCATE DB_Cursor PRINT '' PRINT '--------------------------------------'
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.