Dziś opiszę proces przeniesienia baz systemowych Microsoft SQL Serwer z domyślnej lokalizacji do dowolnie wybranej, nowej lokalizacji.
Pierwszym krokiem jest zweryfikowanie ścieżek, gdzie fizycznie znajdują się pliki baz master, model i msdb. W tym celu wykonujemy poniższe zapytanie z poziomu SQL Server Management Studio.
select name, physical_name from sys.master_files where database_id = DB_ID(N'MSDB')
go
select name, physical_name from sys.master_files where database_id = DB_ID(N'Model')
go
select name, physical_name from sys.master_files where database_id = DB_ID(N'master')
go
Domyślnie pliki baz i loga transakcyjnego znajdują się w C:\Program Files\Microsoft SQL Server\...
Chcę je przenieść do katalogu C:\SQL\DATA\
. W tym celu wykonuję polecenie:
use master;
go
Alter Database MSDB
Modify File (Name = MSDBData, FILENAME = 'C:\SQL\DATA\MSDBData.mdf')
GO
--MSDB Log file
ALTER DATABASE MSDB
MODIFY FILE (NAME = MSDBLog, FILENAME = 'C:\SQL\DATA\MSDBLog.ldf');
GO
--MODEL db file
use master;
go
Alter Database Model
Modify File (Name = Modeldev, FILENAME = 'C:\SQL\DATA\Model.mdf')
GO
--MODEL log file
ALTER DATABASE Model
MODIFY FILE (NAME = Modellog, FILENAME = 'C:\SQL\DATA\Modellog.ldf');
GO
Powyższe polecenie dotyczy tylko baz msdb
i model
, ponieważ dla bazy master
wykonujemy oddzielną czynność. Teraz zatrzymujemy usługę SQL Server
. Można to zrobić z GUI. Klikamy kombinację klawiszy Win+R
i wpisujemy services.msc
potwierdzając OK
. Odnajdujemy SQL Server
na liście usług i klikamy prawym klawiszem myszy wybierając opcję Stop
.
Po zatrzymaniu usługi przenosimy wszystkie 6 plików, których nazwy zwróciło pierwsze polecenie (łącznie z plikami bazy master) do nowej lokalizacji.
Teraz kolej na zmianę w konfiguracji dotyczącą bazy master. Otwieramy SQL Server Configuration Manager
, wybieramy w lewym panelu SQL Server Services
i klikamy w prawym panelu, prawym klawiszem myszy usługę SQL Server
wybierając Właściwości
. Teraz przechodzimy na zakładkę Startup Parameters
.
Interesują nas wpisy dotyczące plików master.mdf
i mastlog.ldf
. Odpowiednio pierwsza i trzecia pozycja na powyższym zrzucie. Klikamy w pierwszą pozycję, zmieniamy ścieżkę dostępu i klikamy przycisk Update
. Analogicznie postępujemy z trzecią pozycją.
UWAGA! Nie zmieniamy parametrów -d
i -l
przed ścieżkami.
Po wykonaniu Update
klikamy OK
i zamykamy SQL Server Configuration Manager
i uruchamiamy usługę SQL Server
.
Powyższe rozwiązanie było testowane i działa w SQL Server 2022 i 2012
Koniec 🙂
Jeżeli pomogłem to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.
Jeżeli po wykonaniu powyższych czynności usługa nie chce się uruchomić, to pomocny może być dziennik zdarzeń systemu Windows. Komunikat na zdjęciu poniżej świadczy o tym, że konto, na którym uruchamiana jest usługa nie ma uprawnień do katalogu, do którego skopiowaliśmy pliki baz danych. Należy zmodyfikować uprawnienia do katalogu lub zmienić konto, na którym uruchamiana jest usługa.
Jeżeli prawidłowo zmodyfikowaliśmy uprawnienia usługi do plików, a mimo to usługa nie chce się uruchomić to uruchamiamy edytor rejestru. Klikamy kombinację klawiszy Win+R
i wpisujemy regedit
potwierdzając OK
. W oknie Edytora rejestru klikamy kombinację klawiszy CTRL+F
(Znajdź) i wyszukujemy frazę SQLDataRoot
. Po znalezieniu odpowiadającego klucza rejestru edytujemy w nim ścieżkę, na tą, gdzie skopiowaliśmy wcześniej pliki z bazami danych.
Analogicznie postępujemy z kluczami ErrorDumpDir
i SQLAgent.Out
wyszukując osobno ich frazy. Jeżeli nie znajdujesz poszczególnych kluczy, to przejdź na początek gałęzi rejestru i wyszukaj ponownie.
Hi, I read your new stuff on a regular basis. Your writing style is witty, keep up the good work!