Microsoft SQL Server przeniesienie baz systemowych.

Dziś opiszę proces przeniesienia baz systemowych Microsoft SQL Serwer z domyślnej lokalizacji do dowolnie wybranej, nowej lokalizacji.

Grafika wygenerowana przez AI https://www.bing.com/images/create

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ą.

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 Postaw mi kawę na buycoffee.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.

Jeden komentarz

  1. Hi, I read your new stuff on a regular basis. Your writing style is witty, keep up the good work!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *