sql >> Database >  >> RDS >> Sqlserver

De SQL Server-hoofddatabase herstellen

INLEIDING

De hoofddatabase bevat records van de structuur/configuratie voor zowel de huidige instantie als alle andere databases. Wanneer u sp_configure . uitvoert , schrijft u gegevens naar de hoofddatabase. Het bevat ook de meeste dynamische beheerweergaven die nodig zijn om de instantie te bewaken.

Het belang van de masterdatabase is cruciaal. Ten eerste heeft het de informatie die nodig is voor het openen van alle andere databases en moet het eerst worden geopend. Vervolgens gaat het om alle instantieniveau-principals voor de huidige instantie.

Het is cruciaal om dagelijks een back-up te maken van de hoofddatabase. Even belangrijk is om te weten hoe u de hoofddatabase naar de instantie kunt herstellen. De meest voorkomende gevallen zijn de databasecrash of de noodzaak om de hoofddatabase te herstellen naar een andere instantie wanneer de broninstantie niet langer wordt gebruikt. In dit artikel zullen we het specifieke geval onderzoeken van het verplaatsen van de hoofddatabase naar een andere instantie.

CONTROLEER DE STATUS VAN APPLICATIEDIENSTEN

Het herstellen van de hoofddatabase naar een ander exemplaar houdt in dat het exemplaar in de modus voor één gebruiker wordt gestart. Het is dus essentieel om ervoor te zorgen dat de actieve sessie de enige is die de instantie bestuurt.

Zorg ervoor dat alle applicatieservices geen toegang krijgen tot de instance, vooral als dergelijke applicaties geprivilegieerde toegang hebben. Er kunnen problemen optreden als u de instantie start in de modus voor één gebruiker terwijl de toepassing al een sessie tot stand heeft gebracht. In dit geval kunt u niet doorgaan met een interactieve sessie vanuit SQL Server Management Studio.

STOP SQL SERVER DIENSTEN

Stop alle SQL Server Services met de SQL Server Configuration Manager:klik met de rechtermuisknop op elke service en selecteer Stop uit het contextmenu (zie fig. 2).

START SQL SERVER IN DE MODUS VOOR EENMALIG GEBRUIK

Om de hoofddatabase te herstellen, hebt u het SQL Server-exemplaar nodig in de modus voor één gebruiker. Voer de volgende stappen uit:

  1. CMD-prompt openen
  2. Navigeer naar C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Probleem sqlservr –m OF NET start MSSQLServer /c /m /T3604

OF

Merk op dat stap 2 verwijst naar de Binn directory locatie. Het kan in uw installatie anders zijn.

U kunt de benodigde directory vinden door het tabblad Service van SQL Server-service-eigenschappen in SQL Server Configuration Manager te controleren (zie afbeelding 4):

HERSTEL MEESTER

Wanneer u de master van de ene instantie naar de andere herstelt, krijgt u nieuwe principals en nieuwe waarden in systeemcatalogi die waarden bevatten als de instantienaam en zelfs de tempdb-locatie.

Voordat u de master herstelt, moet u ervoor zorgen dat de paden van de doelserver beschikbaar zijn voor TempDB-bestanden zoals gedefinieerd in de bronserver. Anders zal de nieuwe instantie niet succesvol opstarten nadat het herstel is voltooid.

  1. SQL Server Management Studio openen
  2. Voer de code uit in Listing 1 in SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

NB: De instantie wordt afgesloten zodra het herstel is voltooid.

SERVICE ACCOUNT WIJZIGEN

Ga als volgt te werk om SQL Server op te starten nadat het herstel is voltooid:

  1. Wijzig het SQL Server-serviceaccount in het momenteel aangemelde account.
  2. Open Start> Alle programma's> Microsoft SQL Server 2005> Configuratiehulpmiddelen> SQL Server-configuratiemanager
  3. Klik met de rechtermuisknop op elke service en selecteer Eigenschappen
  4. In de Aanmelden tabblad, voer de gewenste accountnaam en het bijbehorende wachtwoord in.

SERVERNAAM

De hoofddatabase bevat de naam van de instantie waarin deze zich bevindt. Aangezien de back-up die in dit scenario wordt hersteld, afkomstig is van een ander exemplaar, moet u de servernaam bijwerken met behulp van opgeslagen procedures, zoals weergegeven in Listing 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

Start SQL Server opnieuw vanuit SQL Server Configuration Manager om de naamswijziging door te voeren.

SERVICE-AANMELDINGEN

De hoofddatabase registreert ook alle aanmeldingen die zijn gekoppeld aan de broninstantie. In het nieuwe geval moet u onnodige aanmeldingen opruimen. Daarna kunt u de lokale standaard SQL Server-groepen toevoegen aan de huidige instantie.

-- 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;

NB: Zorg ervoor dat de server- en agentserviceaccounts tot hun respectieve groepen op OS-niveau behoren en dat deze OS-groepen over de vereiste machtigingen beschikken. Tabel 1 toont machtigingen voor SQL Server Service-accounts.

S/Nee Privilege Vereist door
1. Aanmelden als service SQL Server-serviceaccount SQL Agent-serviceaccount Integratieserviceaccount
2. Fungeren als onderdeel van het besturingssysteem SQL Server-serviceaccount SQL Agent-serviceaccount
3 Aanmelden als batchtaak SQL Server-serviceaccount SQL Agent-serviceaccount
4. Een token op procesniveau vervangen SQL Server-serviceaccount SQL Agent-serviceaccount
5. Traverse controle omzeilen SQL Server-serviceaccount SQL Agent-serviceaccount Integratieserviceaccount
6. Geheugenquota voor een proces aanpassen SQL Server-serviceaccount SQL Agent-serviceaccount
7. Maak globale objecten Integratieservice-account
8. Pagina's in geheugen vergrendelen (AWE) SQL Server-serviceaccount

Zodra het huishouden op databaseniveau is voltooid, keert u terug naar het reguliere serviceaccount. Start de instantie nog een keer opnieuw vanuit de SQL Server Configuration Manager.

Op dit punt kunt u de applicatieservices starten.

CONCLUSIES

Tijdens de uitvoering van het bovenstaande scenario kunnen fouten optreden. Hieronder ziet u de informatie over deze fouten.

Als u de problemen oplost, kunt u hulpprogramma's zoals ProcMon van SysInternal gebruiken. Ze isoleren de problemen met bestandspermissies bij het starten van SQL Server (zie afbeelding 7).

S/N Fout Oorzaak/oplossing
1. SQLServerAgent kon niet worden gestart (reden:kan geen verbinding maken met server '(lokaal)'; SQLServerAgent kan niet starten). Aanmeldingen maken voor alle lokale serviceaccounts
2. De lokale verbindingsprovider van de server heeft niet geluisterd op [ \\.\pipe\SQLLocal\MSSQLSERVER]. Fout:0x5 TDSSNIClient-initialisatie mislukt met fout 0x5, statuscode 0x40. TDSSNIClient-initialisatie is mislukt met fout 0x5, statuscode 0x1. SQL Server kon FRunCM-thread niet spawnen. Controleer het foutenlogboek van SQL Server en de gebeurtenislogboeken van Windows voor informatie over mogelijke gerelateerde problemen. Kan de netwerkbibliotheek niet starten vanwege een interne fout in de netwerkbibliotheek. Bekijk de fouten die direct hieraan voorafgaan in het foutenlogboek om de oorzaak te achterhalen. SQL Server is eerder gestart met een ander serviceaccount en is met geweld beëindigd. Het treedt op tijdens het herstel van de hoofddatabase. Om dit te corrigeren, start u de instantie op met het serviceaccount dat in stap 3 is gebruikt en stopt u de service vervolgens netjes. Daarna kunt u beginnen met het reguliere serviceaccount.
3. SQLServerAgent kon niet worden gestart (reden:fout bij het maken van een nieuwe sessie). Verleen de juiste machtigingen aan het SQL Agent-account

REFERENTIES

Hoofddatabase


  1. Het aantal keren dat een subtekenreeks binnen een tekenreeks voorkomt tellen in PostgreSQL

  2. Oracle JDeveloper 12c gebruiken met Oracle Database, deel 2

  3. Een PostgreSQL-query met 'ANY' werkt niet

  4. Kan geen verbinding maken met localhost, maar wel met computernaam in SQL Server 2008