Skip to content

Archives

  • marzec 2022
  • luty 2022
  • styczeń 2022
  • grudzień 2021
  • listopad 2021

Categories

  • Brak kategorii
Calor Blogfever risk

Odzyskaj bazę danych zasobów SQL Server

admin - 10 lutego, 2022

przez: Daniel Farina | aktualizacja: 2019-10-25 | Komentarze (2) | powiązane: więcej > konfiguracje SQL Server

Konfigurowanie SQL Server dla najlepszej wydajności
  • bezpłatne webinarium MSSQLTips: Konfigurowanie serwera SQL dla najlepszej wydajności
  • Problem
  • rozwiązanie
  • baza danych mssqlsystemresource SQL Server
  • odzyskiwanie bazy danych mssqlsystemresource SQL Server
  • kolejne kroki
  • o autorze

bezpłatne webinarium MSSQLTips: Konfigurowanie serwera SQL dla najlepszej wydajności

Weź udział w tym webinarium, aby dowiedzieć się o najlepszych praktykach i krokach, które należy podjąć, aby upewnić się, że konfiguracja serwera SQL jest skonfigurowana, aby zmaksymalizować wydajność.

Problem

poprawka została zastosowana automatycznie do mojej instancji SQL Server Przez Windows Update.Mogło to pozostać niezauważone, jak to często bywa w przypadku aktualizacji systemu Windows. Kiedy próbowałem uzyskać dostęp do mojej instancji SQL Server, odkryłem, że baza danych mssqlsystemresource nie była tam, gdzie powinna być, a SQL Server nie chciał się uruchomić. W tej końcówce powiem Ci, jak to rozwiązałem.

rozwiązanie

pewnego dnia próbowałem połączyć się z moim środowiskiem testowym SQL Server withSQLServer Management Studio i otrzymałem komunikat o błędzie „server not found”.

w normalnej reakcji otworzyłem SQL Server Configuration Manager, aby sprawdzić status SQL Serverservice; i jak można się domyślić, usługa nie była uruchomiona. W tym momencie byłem trochę zmartwiony, ponieważ usługi dla SQL Server są ustawione na automatyczne uruchamianie.

poprzedziłem pierwszym krokiem odzyskiwania, który polegał na próbie uruchomienia instancji i zobaczenia, co się stanie. Kiedy próbowałem uruchomić instancję SQL Server, otrzymałem następujący komunikat o błędzie, że żądanie nie powiodło się i że muszę sprawdzić dziennik zdarzeń lub inny dziennik błędów, aby uzyskać szczegółowe informacje. Możesz zobaczyć wiadomość na obrazkuponiżej.

 SQL Server nie uruchamia się.

w tym momencie zdałem sobie sprawę, że nie jest to łatwa sprawa do rozwiązania, więc postępowałem zgodnie z instrukcjami themessage i otworzyłem aplikację przeglądarki zdarzeń, aby wyświetlić Dziennik event w poszukiwaniu odpowiedzi.

najpierw spojrzałem na dziennik aplikacji i szukałem zdarzenia z sourceequal do MSSQLSERVER, który jest instancją SQL Server, który rozwiązywałem.Zauważyłem, że wystąpił błąd związany z serwerem SQL, który powiedział „OpenFailed: nie można otworzyć filemssqlsystemresource.mdf OS error: 2” (system nie mógł znaleźć określonego pliku)asis pokazany na poniższym zrzut ekranu. Dla tych z Was, którzy nie wiedzą, poniższy plik jest częścią tzw. bazy danych zasobów i jest wymagany do uruchomienia SQL Server.

Dziennik zdarzeń pokazuje, że plik mssqlsystemresource.mdf nie został znaleziony.

baza danych mssqlsystemresource SQL Server

baza danych mssqlsystemresource jest fizyczną bazą danych, która zawiera wszystkie definicje obiektów systemowych zawartych w SQL Server. Ta baza danych jest tylko do odczytu i nie jest dostępna nawet dla członków serwera SYSADMIN roleunless instancja jest dostępna poprzez dedykowane połączenie administratora po uruchomieniu w trybie pojedynczego użytkownika (z opcją-m startup).

ze względu na fakt, że baza danych zasobów zawiera cały kod obiektów systemowych(nie zawiera żadnych danych użytkownika ani metadanych), aktualizacja wersji jest wykonywana po prostu przez zastąpienie plików bazy danych zasobów w folderze instancji ’ Binn.

odzyskiwanie bazy danych mssqlsystemresource SQL Server

po odkryciu, że brakuje plików dla bazy danych mssqlsystemresource, muszę wiedzieć, dlaczego tak się stało i jak rozwiązać problem. Pierwszą rzeczą, którą instynktownie zrobiłem, było wyszukiwanie w Internecie o znikających bazach danych mssqlsystemresource i znalazłem następujący artykuł Microsoft: poprawka: brak bazy danych zasobów po zainstalowaniu aktualizacji lub service packsdla instancji SQL Server 2012 jeden po drugim, a następnie uruchom ponownie serwer.

mając świadomość, że artykuł Microsoft stwierdził, że dotknięte wersje to SQL Server 2012 i 2014, w międzyczasie mój system to SQL Server 2017, ale pomyślałem, że pójdę tą ścieżką, aby zobaczyć.

ku mojemu zdziwieniu zobaczyłem, że kolejne dwie aktualizacje miały działać jedna po drugiej:

  • Aktualizacja zabezpieczeń dla SQL Server 2017 RTM (KB4505224)
  • Aktualizacja zabezpieczeń dla SQL Server 2016 SP1 (KB4505219)
Historia aktualizacji pokazuje dwie aktualizacje SQL Server jedna po drugiej.

teraz, gdy znałem przyczynę, musiałem dowiedzieć się, jak przywrócić bazę mssqlsystemresourcedatabase, ponieważ jest to mój komputer domowy, nie miałem kopii zapasowej. Trzeba było pobrać paczkę i zainstalować ją ręcznie, ale może dlatego, że brakowało mssqlsystemresourcedatabase, nie zadziałało; coś w rodzaju sytuacji z kurczakiem i jajkiem.

nie miałem zamiaru ponownie instalować SQL Server, więc zdecydowałem się na podejście moreheterodox. Otworzyłem folder tymczasowy, którego patch używa do dekompresji plików. Możesz zanotować ten folder po uruchomieniu programu instalacyjnego, wykonując zrzut ekranu, tak jak zrobiłem to później.

Konfiguracja wyodrębnianie plików instalacyjnych.

po zlokalizowaniu katalogu tymczasowego wyszukałem ścieżkę x64\setup\ i po przejrzeniu plików domyśliłem się, że sql_engine_core_inst.mspmay posiada kopię bazy danych mssqlsystemresource. Ten plik jest skompresowany, więc aby go otworzyć, potrzebujesz narzędzia do dekompresji. Użyłem 7-Zip, który jest darmowy i można go pobrać z https://www.7-zip.org/.

na następnym zrzut ekranu widać, że są dwa pliki, Eng_re_resourcedb_ldf_64 i ENG_RE_ResourceDb_mdf_64. Są to pliki themssqlsystemresource database dla 64-bitowej edycji SQL Server w języku angielskimjęzyk. Jeśli potrzebujesz innegojęzyka, musisz zmienić język na stronie pobierania poprawki. Pamiętaj, że silnik instalacyjny zawiera wszystkie języki, ale Pakiety wdrożeniowe są w określonym języku.

skompresowany plik sql_engine_core_inst.msp zawiera pliki bazy danych zasobów.

wyodrębniłem dwa pliki, a następnie zmieniłem ich nazwę w następujący sposób i skopiowałem je do folderu wymienionego powyżej w komunikacie o błędzie, w którym powinny istnieć te pliki.

  • ENG_RE_ResourceDb_ldf_64 przemianowany na mssqlsystemresource.ldf
  • ENG_RE_ResourceDb_mdf_64 przemianowany na mssqlsystemresource.mdf

po tym, jak te pliki zostały przemianowane i skopiowane do właściwego folderu, mogłem uruchomić usługi SQL Server i wszystko działało ponownie.

kolejne kroki
  • w przypadku napotkania takiej lub podobnej sytuacji konieczności przywrócenia bazy zasobów bez konieczności tworzenia kopii zapasowej, aby móc wyodrębnić pliki mssqlsystemresourcedatabase z pakietu instalacyjnego, musisz znać dokładną wersję używanego serwera SQL. Jeśli nie wiesz, jak go znaleźć, możesz przeczytać tę wskazówkę, którąwyznaje różne metody, aby dowiedzieć się:jak powiedzieć, jakiej wersji serwera SQL używasz.
  • dobrą praktyką jest wykonywanie kopii zapasowych bazy danych zasobów; jeśli chcesz wiedzieć, jak to zrobić, sugeruję, abyś zapoznał się z tą wskazówką:SQL Server backup and restore of the Resource database.
  • w tej poradzie wspomniałem, że potrzebujesz „dedykowanych połączeń administratora”, aby móc uzyskać dostęp do bazy danych zasobów. Możesz przeczytać więcej o połączeniach DedicatedAdmin w kategorii Wskazówki dotyczące połączenia administratora serwera SQL Server i wziąć podpowiedź tekstową jako punkt wyjścia: dedykowane połączenie Administratora w SQL Server.
  • dodatkowo wspomniałem, że jeśli chcesz uzyskać dostęp do bazy danych zasobów, musisz również uruchomić SQL Server w trybie pojedynczego użytkownika. W tej podpowiedzi dowiesz się, jak używać parametrów startowych, które pozwolą Ci uruchomić instancję w trybie pojedynczego użytkownika: Ustawianie parametrów startowych serwera SQL.
  • jeśli twój problem zawiera scenariusz przywrócenia głównej bazy danych bez zachowania kopii zapasowej, możesz spojrzeć na tę podpowiedź: Przywracanie głównej bazy danych SQL Server nawet bez kopii zapasowej.

Ostatnia aktualizacja: 2019-10-25

Pobierz Skrypty

przycisk Next tip

o autorze
MSSQLTips autor Daniel FarinaDaniel Farina urodził się w Buenos Aires w Argentynie. Sam wykształcony, od dzieciństwa wykazywał zamiłowanie do nauki.
Zobacz wszystkie moje porady
powiązane zasoby

  • więcej porad DBA SQL Server…

Dodaj komentarz Anuluj pisanie odpowiedzi

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

Ostatnie wpisy

  • O nas-Gandolfo Helin & Fountain Literary Management
  • 5 rzeczy, które warto wiedzieć o Shalane Flanagan
  • Rolling Stone
  • toksyczność skórna
  • Siergiej Tcherepnin-Artadia
  • Jak radzić sobie ze stresem i presją społeczną
  • która rasa konia jest najmądrzejsza?
  • kwas krzemowy (si(OH)4) ma znaczący wpływ na sygnał absorpcji atomowej glinu mierzony za pomocą spektrometrii absorpcji atomowej w piecu Grafitowym (gfaas)
  • wyjaśniając nasz Smart część 8-Self Smart
  • Sadie T. M. Alexander (1898-1989)

Archiwa

  • marzec 2022
  • luty 2022
  • styczeń 2022
  • grudzień 2021
  • listopad 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Calor Blog 2022 | Theme by ThemeinProgress | Proudly powered by WordPress