sql >> Databasteknik >  >> RDS >> Sqlserver

Återställer SQL Server Master Database

INTRODUKTION

Huvuddatabasen innehåller poster över strukturen/konfigurationen för både den aktuella instansen och alla andra databaser. När du kör sp_configure , skriver du data till huvuddatabasen. Den innehåller också de flesta dynamiska hanteringsvyer som är nödvändiga för att övervaka instansen.

Vikten av masterdatabasen är avgörande. För det första har den den information som behövs för att öppna alla andra databaser och måste öppnas först. Sedan involverar det alla principer på instansnivå för den aktuella instansen.

Det är avgörande att säkerhetskopiera huvuddatabasen dagligen. Lika viktigt är att veta hur man återställer huvuddatabasen till instansen. De vanligaste fallen är databaskraschen eller nödvändigheten av att återställa huvuddatabasen till en annan instans när källinstansen inte längre används. I den här artikeln kommer vi att undersöka det specifika fallet med att flytta huvuddatabasen till en annan instans.

Kontrollera STATUS FÖR APPLIKATIONSTJÄNSTER

Att återställa huvuddatabasen till en annan instans innebär att instansen startas i enanvändarläget. Därför är det viktigt att se till att den aktiva sessionen är den enda som styr instansen.

För det, stoppa alla applikationstjänster från att komma åt instansen, särskilt om sådana applikationer har privilegierad åtkomst. Problem kan uppstå om du startar instansen i enanvändarläget medan applikationen redan har etablerat en session. I det här fallet kommer du inte att kunna fortsätta med en interaktiv session från SQL Server Management Studio.

STOPPA SQL SERVER SERVICES

Stoppa alla SQL Server Services med SQL Server Configuration Manager:högerklicka på varje tjänst och välj Stopp från snabbmenyn (se fig. 2).

STARTA SQL SERVER I ENANVÄNDARLÄGET

För att återställa huvuddatabasen behöver du SQL Server-instansen i enanvändarläget. Utför följande steg:

  1. Öppna CMD-prompt
  2. Navigera till C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Problem sqlservr –m ELLER NET start MSSQLServer /c /m /T3604

ELLER

Observera att steg 2 hänvisar till Binn katalogplats. Det kan vara annorlunda i din installation.

Du kan hitta den nödvändiga katalogen genom att kolla fliken Service för SQL Server-tjänstegenskaper i SQL Server Configuration Manager (se figur 4):

ÅTERSTÄLL MASTER

När du återställer master från en instans till en annan får du nya principer och nya värden i systemkataloger som innehåller sådana värden som instansnamnet och till och med tempdb-platsen.

Innan du återställer master, se till att destinationsserverns sökvägar är tillgängliga för TempDB-filer enligt definitionen i källservern. Annars kommer den nya instansen inte att starta efter att återställningen är klar.

  1. Öppna SQL Server Management Studio
  2. Kör koden i Listing 1 i SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

Obs: Förekomsten stängs av när återställningen är klar.

ÄNDRING AV SERVICEKONTO

För att starta SQL Server efter att återställningen är klar, gör följande:

  1. Ändra SQL Server Service-kontot till det för närvarande inloggade kontot.
  2. Öppna Start> Alla program> Microsoft SQL Server 2005> Konfigurationsverktyg> SQL Server Configuration Manager
  3. Högerklicka på varje tjänst och välj Egenskaper
  4. I Logga in anger du önskat kontonamn och motsvarande lösenord.

SERVERNAMN

Huvuddatabasen innehåller namnet på instansen där den finns. Eftersom säkerhetskopian som återställs i det här scenariot är från en annan instans, måste du uppdatera servernamnet med hjälp av lagrade procedurer, som visas i Lista 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

Starta om SQL Server från SQL Server Configuration Manager för att namnändringen ska träda i kraft.

TJÄNSTINLOGGNINGAR

Huvuddatabasen registrerar också alla inloggningar som är associerade med källinstansen. I den nya instansen måste du rensa bort onödiga inloggningar. Efter det kan du lägga till de lokala standard-SQL-servergrupperna till den aktuella instansen.

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

Obs! Se till att server- och agenttjänstkontona tillhör sina respektive grupper på OS-nivå och att dessa OS-grupper har de nödvändiga behörigheterna. Tabell 1 visar behörigheter för SQL Server Service-konton.

S/Nej Privilege Krävs av
1. Logga in som en tjänst SQL Server Service Account SQL Agent Service Account Integration Service Account
2. Fungerar som en del av operativsystemet SQL Server Service Account SQL Agent Service Account
3 Logga in som ett batchjobb SQL Server Service Account SQL Agent Service Account
4. Ersätt en token på processnivå SQL Server Service Account SQL Agent Service Account
5. Förbigå kryssningskontroll SQL Server Service Account SQL Agent Service Account Integration Service Account
6. Justera minneskvoter för en process SQL Server Service Account SQL Agent Service Account
7. Skapa globala objekt Integrationstjänstkonto
8. Lås sidor i minnet (AWE) SQL Server Service Account

När städningen är klar på databasnivå, återgå till det vanliga servicekontot. Starta om instansen en gång till från SQL Server Configuration Manager.

Vid det här laget kan du starta applikationstjänsterna.

SLUTSATS

Under utförandet av ovanstående scenario kan fel uppstå. Nedan ser du informationen om dessa fel.

Om du felsöker problemen kan du använda verktyg som SysInternals ProcMon. De isolerar filbehörighetsproblemen när SQL Server startas (se figur 7).

S/N Fel Orsak/lösning
1. SQLServerAgent kunde inte startas (orsak:Det gick inte att ansluta till servern '(lokal)'; SQLServerAgent kan inte startas). Skapa inloggningar för alla lokala tjänstkonton
2. Serverens lokala anslutningsleverantör kunde inte lyssna på [ \\.\pipe\SQLLocal\MSSQLSERVER ]. Fel:0x5 TDSSNIClient-initiering misslyckades med fel 0x5, statuskod 0x40. TDSSNIClient-initiering misslyckades med fel 0x5, statuskod 0x1. SQL Server kunde inte skapa en FRunCM-tråd. Kontrollera SQL Server-felloggen och Windows-händelseloggarna för information om möjliga relaterade problem. Kunde inte starta nätverksbiblioteket på grund av ett internt fel i nätverksbiblioteket. För att fastställa orsaken, granska felen omedelbart före detta i felloggen. SQL Server startades tidigare med ett annat tjänstkonto och avslutades med kraft. Det inträffar under återställningen av huvuddatabasen. För att rätta till detta startar du upp instansen med tjänstekontot som användes i steg 3 och stoppar sedan tjänsten graciöst. Efter det kan du börja med det vanliga servicekontot.
3. SQLServerAgent kunde inte startas (orsak:Fel när en ny session skapades). Ge lämpliga behörigheter till SQL Agent-kontot

REFERENSER

Master Database


  1. cx_Oracle:Hur kan jag ta emot varje rad som en ordbok?

  2. Fel i MySQL vid inställning av standardvärde för DATE eller DATETIME

  3. Förstå logbuffertspolningar

  4. Heroku Postgres Fel:PGError:ERROR:relationsorganisationer finns inte (ActiveRecord::StatementInvalid)