INFORMATICS

The Best

Migracja serwera MSSQL

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

 

Przed migracją sprawdźmy

1. ustawienia serwera SQL

use master
GO
select SERVERPROPERTY ('Collation')
select SERVERPROPERTY ('Edition')
select SERVERPROPERTY ('InstanceName')
select SERVERPROPERTY ('ProductVersion')
select SERVERPROPERTY ('ProductLevel')
select SERVERPROPERTY ('ServerName')

 

2. Sprawdzamy globalną konfigurację

use master
go
sp_configure 'show advanced options' , 1
reconfigure
go
sp_configure
go

3. Sprawdzamy poprawność bazy

DBCC CHECKDB ('DATABASE_NAME')

4. Zanotuj konfigurację starej bazy

Bardzo ważna jest zmiana domyślnych ustawień wczytanych podczas instalacji na ustawienia docelowe najlepiej przepisane z wypracowanego już modelu.

Domyślne ustawnie w MS to 1MB na plik danych a 10% na plik dziennika

5. Zanotuj ścieżki do plików bazodanowych master, model, msdb, tempdb databases i logów.

use master
go
select name, filename from sysaltfiles where dbid in (1,2,3,4) order by dbid

6. Notujemy ścieżkę fizyczną do bazy i logów

SQL 2008 powinno być w : \Program Files\Microsoft SQL Server\ MSSQL10_50.<instance_name>\ MSSQL \ Binn \
Dla SQL 2005: położene jest tak samo jak położenie głównego pliku bazy danych 
 Polecenie uruchomić na SQL 2008 i wersjach wyższych w celu znalezienia fizycznej lokalizacji:

use master
go
select name, filename,dbid from sysaltfiles where dbid in (32767)

 

7. Wykonujemy pełną kopię bazy master i danych

 

Kroki jakie wykonujemy na dedykowanym serwerze pod nową bazę

O czym należy pamiętać

Dla ułatwienia migracji warto zachować tę samą wersję MSSQLa - ta sama wersja ten sam serwis pack

Sprawdzenie zainstalowanej wersji wykonujemy poleceniem

select @@version

staramy się zapewnić te same litery dysków na  serwerach

Tworzymy kopie zapasowe oryginalnych serwerów

Zatrzymujemy serwer i kopiujemy pliki w bezpieczne miejsce

Uruchamiamy SQL Server w trybie single user wykonujemy to z linii poleceń wpisując poniższą ścieżkę:

“C:\Program Files\Microsoft SQL Server\MSSQL[InstanceName]\MSSQL\Binn\sqlservr.exe”

cd [drive]:\folder_name
sqlservr.exe -c -m

Przywracamy master z kopi za pomocą polecenia:

 

-- connect to SQL
sqlcmd -SMACHINENAME\SERVERINSTANCE -E
-- make sure you are connected to right server:
select @@servername
GO
RESTORE DATABASE master FROM DISK = '[Drive]:\Backup_path\MASTER_.bak' WITH REPLACE;

Zamykamy okno linii poleceń

Tworzymy nowe ścieżki dostępu do baz danych

 

 

select * from sysaltfiles
use master
go

Alter database tempdb modify file
(name=tempdev, filename='[drive]:\new_location\tempdb.mdf')
Alter database tempdb modify file
(name=tempdev2, filename='[drive]:\new_location\tempdev2.ndf')
Alter database tempdb modify file
(name=templog, filename='[drive]:\new_location\templog.ldf')

Alter database model modify file
(name=modeldev, filename='[drive]:\new_location\model.mdf')
Alter database model modify file
(name=modellog, filename='[drive]:\new_location\modellog.ldf')

 

Zatrzymujemy SQL Server i przenosimy pliki bazy ze starej lokalizacji do nowej lokalizacji

Uruchamiamy SQL i sprawdzamy lokalizację plików

select * from sysaltfiles

Ponieważ dwa różne serwery posiadają różne poświadczenia szyfrowane kluczem master musimy przenieść klucz z poświadczeniami

#serwer stary
BACKUP SERVICE MASTER KEY TO FILE  ='[Drive]:\share\master_key' ENCRYPTION BY PASSWORD ='password'

#prawy klik na pliku, properties, security, permissions: nadajemy full uprawnienia

#serwer nowy
RESTORE SERVICE MASTER KEY FROM FILE = '[Drive]:\master_keymaster_key' DECRYPTION BY PASSWORD = 'password' force

Zmieniamy nazwę nowego serwera na nazwę starego serwera

# sprawdzamy nazwę serwera z ID = 0. Pytanie będzie zwracać nazwę serwera 1 nazwa serwera 2 przestanie istnieć. 

SELECT @@servername
EXEC sp_helpserver 'SERVER B'
EXEC sp_helpserver 'SERVER A'
SELECT srvname FROM sysservers where srvid = 0

# kasujemy DELETE stera powiązania do starego serwera.

EXEC sp_droplinkedsrvlogin 'SERVER A', null
EXEC sp_dropserver  'SERVER A'

# Dodajemy ADD nową nazwę serwera

EXEC sp_addserver [SERVER B] , 'local' ,'duplicate_OK'
EXEC sp_addlinkedsrvlogin 'SERVER B', 'true'

# RESTARTujemy SQL Server. [SERVER B]

SELECT @@servername
EXEC sp_helpserver 'SERVER 1'
SELECT srvname FROM sysservers where srvid = 0

W starszych wersjach musimy także zaktualizować nazwę serwera komendą

 

 

SELECT * FROM msdb.dbo.sysjobs
UPDATE msdb.dbo.sysjobs SET originating_server = @@SERVERNAME WHERE originating_server <> @@SERVERNAME

 

 

Search