Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Przywracanie głównej bazy danych programu SQL Server

WPROWADZENIE

Baza danych master zawiera rekordy struktury/konfiguracji zarówno dla bieżącej instancji, jak i wszystkich innych baz danych. Po uruchomieniu sp_configure , zapisujesz dane w głównej bazie danych. Zawiera również większość dynamicznych widoków zarządzania, które są niezbędne do monitorowania instancji.

Kluczowe znaczenie ma główna baza danych. Po pierwsze, zawiera informacje niezbędne do otwarcia wszystkich innych baz danych i musi zostać najpierw otwarty. Następnie obejmuje wszystkie podmioty na poziomie instancji dla bieżącej instancji.

Bardzo ważne jest codzienne tworzenie kopii zapasowej bazy danych master. Równie ważna jest wiedza, jak przywrócić bazę danych master do instancji. Najczęstsze przypadki to awaria bazy danych lub konieczność przywrócenia bazy master na inną instancję, gdy nie będzie już używana instancja źródłowa. W tym artykule zbadamy konkretny przypadek przeniesienia bazy danych master do innej instancji.

SPRAWDŹ STAN USŁUG APLIKACJI

Przywrócenie bazy danych master do innej instancji będzie wymagało uruchomienia instancji w trybie pojedynczego użytkownika. Dlatego ważne jest, aby upewnić się, że aktywna sesja jest jedyną kontrolującą instancję.

W tym celu zatrzymaj dostęp wszystkich usług aplikacji do wystąpienia, zwłaszcza jeśli takie aplikacje mają dostęp uprzywilejowany. Problemy mogą wystąpić, jeśli uruchomisz instancję w trybie jednego użytkownika, gdy aplikacja już ustanowiła sesję. W takim przypadku nie będzie można kontynuować interaktywnej sesji z SQL Server Management Studio.

ZATRZYMAJ USŁUGI SERWERA SQL

Zatrzymaj wszystkie usługi SQL Server za pomocą Menedżera konfiguracji SQL Server:kliknij prawym przyciskiem każdą usługę i wybierz Zatrzymaj z menu kontekstowego (patrz rys. 2).

URUCHOM SERWER SQL W TRYBIE JEDNEGO UŻYTKOWNIKA

Do przywrócenia głównej bazy danych potrzebna jest instancja SQL Server w trybie pojedynczego użytkownika. Wykonaj następujące kroki:

  1. Otwórz monit CMD
  2. Przejdź do C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Problem sqlservr –m LUB NET start MSSQLServer /c /m /T3604

LUB

Pamiętaj, że krok 2 odnosi się do Binna lokalizacja katalogu. W Twojej instalacji może być inaczej.

Niezbędny katalog można znaleźć, sprawdzając zakładkę Service we właściwościach usługi SQL Server w Menedżerze konfiguracji SQL Server (patrz rysunek 4):

PRZYWRÓĆ MASTER

Kiedy przywracasz master z jednej instancji do drugiej, otrzymujesz nowe podmioty i nowe wartości w katalogach systemowych zawierających takie wartości, jak nazwa instancji, a nawet lokalizacja tempdb.

Przed przywróceniem wzorca upewnij się, że ścieżki serwera docelowego są dostępne dla plików TempDB zgodnie z definicją na serwerze źródłowym. W przeciwnym razie nowa instancja nie uruchomi się pomyślnie po zakończeniu przywracania.

  1. Otwórz SQL Server Management Studio
  2. Uruchom kod z Listingu 1 w SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

Uwaga: Instancja zostanie zamknięta po zakończeniu przywracania.

ZMIANA KONTA SERWISOWEGO

Aby uruchomić SQL Server po zakończeniu przywracania, wykonaj następujące czynności:

  1. Zmień konto usługi SQL Server na aktualnie zalogowane konto.
  2. Otwórz Start> Wszystkie programy> Microsoft SQL Server 2005> Narzędzia konfiguracyjne> Menedżer konfiguracji SQL Server
  3. Kliknij prawym przyciskiem każdą usługę i wybierz Właściwości
  4. W Zaloguj się wprowadź żądaną nazwę konta i odpowiednie hasło.

NAZWA SERWERA

Główna baza danych zawiera nazwę instancji, w której się znajduje. Ponieważ kopia zapasowa przywrócona w tym scenariuszu pochodzi z innej instancji, należy zaktualizować nazwę serwera za pomocą procedur składowanych, jak pokazano na Listingu 2.

-- Listing 2: Change the Instance Name for a SQL Server Instance
-- Check the current server name

select @@SERVERNAME

-- Change the server name as seen by the database

sp_dropserver 'EUK-POSTSVR-01'--Present Server name goes here
go 
sp_addserver 'EUK-POSTBKP-01','local'--New Server name goes here 
go

Zrestartuj SQL Server z SQL Server Configuration Manager, aby zmiana nazwy zaczęła obowiązywać.

LOGINY DO USŁUG

Baza danych master rejestruje również wszystkie loginy skojarzone z instancją źródłową. W nowej instancji musisz wyczyścić niepotrzebne logowania. Następnie możesz dodać lokalne domyślne grupy SQL Server do bieżącej instancji.

-- Listing 3: Remove Unnecessary Logins
drop login [EUK-POSTSVR-01\SQLServer2005MSSQLUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005MSFTEUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005SQLAgentUser$EUK-POSTSVR-01$MSSQLSERVER]

-- Listing 4: Add local default SQL Server Groups
create login [EUK-POSTBKP-01\SQLServer2005MSSQLUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005SQLAgentUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005MSFTEUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;

Uwaga: Upewnij się, że konta usług serwera i agenta należą do odpowiednich grup na poziomie systemu operacyjnego i że te grupy systemu operacyjnego mają wymagane uprawnienia. Tabela 1 przedstawia uprawnienia dla kont usługi SQL Server.

S/Nie Przywilej Wymagane przez
1. Zaloguj się jako usługa Konto usługi SQL Server Konto usługi integracji konta usługi agenta SQL
2. Działaj jako część systemu operacyjnego Konto usługi SQL Server Konto usługi agenta SQL
3 Zaloguj się jako zadanie wsadowe Konto usługi SQL Server Konto usługi agenta SQL
4. Zastąp token na poziomie procesu Konto usługi SQL Server Konto usługi agenta SQL
5. Pomiń sprawdzanie przemierzania Konto usługi SQL Server Konto usługi integracji konta usługi agenta SQL
6. Dostosuj limity pamięci dla procesu Konto usługi SQL Server Konto usługi agenta SQL
7. Utwórz obiekty globalne Konto usługi integracji
8. Zablokuj strony w pamięci (AWE) Konto usługi serwera SQL

Po zakończeniu sprzątania na poziomie bazy danych wróć do zwykłego konta usługi. Uruchom ponownie instancję jeszcze raz z Menedżera konfiguracji serwera SQL.

W tym momencie możesz uruchomić usługi aplikacji.

WNIOSKI

Podczas realizacji powyższego scenariusza mogą wystąpić błędy. Poniżej zobaczysz informacje o tych błędach.

Jeśli rozwiążesz problemy, możesz użyć narzędzi, takich jak ProcMon firmy SysInternal. Izolują problemy z uprawnieniami do plików podczas uruchamiania SQL Server (patrz Rysunek 7).

S/N Błąd Przyczyna/rozwiązanie
1. Nie można uruchomić programu SQLServerAgent (przyczyna:nie można połączyć się z serwerem „(lokalnie)”; nie można uruchomić programu SQLServerAgent). Utwórz loginy dla wszystkich kont usług lokalnych
2. Dostawca połączenia lokalnego serwera nie mógł nasłuchiwać na [ \\.\pipe\SQLLocal\MSSQLSERVER ]. Błąd:0x5 Inicjalizacja TDSSNIClient nie powiodła się z powodu błędu 0x5, kod stanu 0x40. Inicjalizacja TDSSNIClient nie powiodła się z powodu błędu 0x5, kod stanu 0x1. SQL Server nie może zainicjować wątku FRunCM. Sprawdź dziennik błędów programu SQL Server i dzienniki zdarzeń systemu Windows, aby uzyskać informacje o możliwych powiązanych problemach. Nie można uruchomić biblioteki sieciowej z powodu wewnętrznego błędu w bibliotece sieciowej. Aby określić przyczynę, przejrzyj błędy bezpośrednio poprzedzające ten w dzienniku błędów. Program SQL Server został wcześniej uruchomiony z innym kontem usługi i został wymuszony. Występuje podczas przywracania bazy danych master. Aby to naprawić, uruchom wystąpienie przy użyciu konta usługi użytego w kroku 3, a następnie zatrzymaj usługę z wdziękiem. Następnie możesz zacząć od zwykłego konta usługi.
3. SQLServerAgent nie mógł zostać uruchomiony (przyczyna:błąd podczas tworzenia nowej sesji). Przyznaj odpowiednie uprawnienia kontu agenta SQL

REFERENCJE

Główna baza danych


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między sys.objects, sys.system_objects i sys.all_objects w programie SQL Server

  2. Co uczenie maszynowe oznacza dla specjalistów od baz danych

  3. Jak znaleźć domyślny język użytkownika w SQL Server (T-SQL)

  4. SQL Server, przekonwertować nazwaną instancję na instancję domyślną?

  5. Ustaw wartość początkową dla kolumny z autoinkrementacją