INTRODUZIONE
Il database master contiene i record della struttura/configurazione sia per l'istanza corrente che per tutti gli altri database. Quando esegui sp_configure , si stanno scrivendo dati nel database principale. Contiene anche la maggior parte delle viste a gestione dinamica necessarie per monitorare l'istanza.
L'importanza del database master è cruciale. Innanzitutto, ha le informazioni necessarie per aprire tutti gli altri database e deve essere aperto prima. Quindi, coinvolge tutti i principali a livello di istanza per l'istanza corrente.
È fondamentale eseguire quotidianamente il backup del database principale. Altrettanto importante è sapere come ripristinare il database master nell'istanza. I casi più frequenti sono l'arresto anomalo del database o la necessità di ripristinare il database master in un'altra istanza quando non si utilizza più l'istanza di origine. In questo articolo esamineremo il caso specifico dello spostamento del database master in un'altra istanza.
CONTROLLA LO STATO DEI SERVIZI APPLICATIVI
Il ripristino del database master in un'altra istanza comporterà l'avvio dell'istanza in modalità utente singolo. Pertanto, è essenziale assicurarsi che la sessione attiva sia l'unica a controllare l'istanza.
Per questo, impedisci a tutti i servizi applicativi di accedere all'istanza, soprattutto se tali applicazioni hanno accesso privilegiato. Possono verificarsi problemi se si avvia l'istanza in modalità utente singolo mentre l'applicazione ha già stabilito una sessione. In questo caso, non potrai procedere con una sessione interattiva da SQL Server Management Studio.
FERMARE I SERVIZI SQL SERVER
Arrestare tutti i servizi SQL Server con Gestione configurazione SQL Server:fare clic con il pulsante destro del mouse su ciascun servizio e selezionare Interrompi dal menu contestuale (vedi fig. 2).
AVVIO SQL SERVER IN MODALITÀ UTENTE SINGOLO
Per ripristinare il database master, è necessaria l'istanza di SQL Server in modalità utente singolo. Procedi come segue:
- Apri prompt CMD
- Vai a C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
- Problema sqlservr –m OR NET start MSSQLServer /c /m /T3604
O
Nota che il passaggio 2 si riferisce a Binn posizione della directory. Può essere diverso nella tua installazione.
È possibile trovare la directory necessaria controllando la scheda Servizio delle proprietà del servizio SQL Server in Gestione configurazione SQL Server (vedere la figura 4):
RIPRISTINO MASTER
Quando ripristini il master da un'istanza a un'altra, ottieni nuove entità e nuovi valori nei cataloghi di sistema contenenti valori come il nome dell'istanza e persino la posizione di tempdb.
Prima di ripristinare il master, assicurarsi che i percorsi del server di destinazione siano disponibili per i file TempDB come definito nel server di origine. In caso contrario, la nuova istanza non si avvierà correttamente al termine del ripristino.
- Apri SQL Server Management Studio
- Esegui il codice nel Listato 1 in SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;
NB: L'istanza si spegnerà una volta completato il ripristino.
MODIFICA ACCOUNT SERVIZIO
Per avviare SQL Server al termine del ripristino, effettuare le seguenti operazioni:
- Cambia l'account del servizio SQL Server con l'account attualmente connesso.
- Open Start> Tutti i programmi> Microsoft SQL Server 2005> Strumenti di configurazione> Gestione configurazione SQL Server
- Fai clic con il pulsante destro del mouse su ciascun servizio e seleziona Proprietà
- Nel Accedi scheda, inserisci il nome dell'account desiderato e la password corrispondente.
NOME SERVER
Il database master contiene il nome dell'istanza in cui si trova. Poiché il backup ripristinato in questo scenario proviene da un'istanza diversa, è necessario aggiornare il nome del server utilizzando le procedure memorizzate, come mostrato nel Listato 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
Riavviare SQL Server da Gestione configurazione SQL Server per rendere effettiva la modifica del nome.
ACCESSO AL SERVIZIO
Il database master registra anche tutti gli accessi associati all'istanza di origine. Nella nuova istanza, è necessario ripulire gli accessi non necessari. Successivamente, puoi aggiungere i gruppi di SQL Server predefiniti locali all'istanza corrente.
-- 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: Assicurarsi che gli account di servizio del server e dell'agente appartengano ai rispettivi gruppi a livello di sistema operativo e che questi gruppi di sistema operativo dispongano delle autorizzazioni necessarie. La tabella 1 mostra le autorizzazioni per gli account del servizio SQL Server.
S/No | Privilegio | Richiesto da |
1. | Accedi come servizio | Account del servizio SQL Server Account del servizio di integrazione dell'account dell'agente SQL |
2. | Agire come parte del sistema operativo | Account servizio SQL ServerAccount servizio SQL Agent |
3 | Accedere come lavoro batch | Account servizio SQL ServerAccount servizio SQL Agent |
4. | Sostituisci un token a livello di processo | Account servizio SQL ServerAccount servizio SQL Agent |
5. | Ignora il controllo trasversale | Account del servizio SQL Server Account del servizio di integrazione dell'account dell'agente SQL |
6. | Regola le quote di memoria per un processo | Account servizio SQL ServerAccount servizio SQL Agent |
7. | Crea oggetti globali | Account del servizio di integrazione |
8. | Blocca le pagine in memoria (AWE) | Account del servizio SQL Server |
Una volta completata la pulizia a livello di database, ripristinare l'account di servizio regolare. Riavvia l'istanza ancora una volta da Gestione configurazione SQL Server.
A questo punto, puoi avviare i servizi dell'applicazione.
CONCLUSIONI
Durante l'esecuzione dello scenario precedente, possono verificarsi errori. Di seguito, vedrai le informazioni su questi errori.
Se risolvi i problemi, potresti utilizzare strumenti come ProcMon di SysInternal. Isolano i problemi di autorizzazione dei file all'avvio di SQL Server (vedere la figura 7).
S/N | Errore | Causa/Soluzione |
1. | Impossibile avviare SQLServerAgent (motivo:impossibile connettersi al server '(locale)'; Impossibile avviare SQLServerAgent). | Crea accessi per tutti gli account di servizio locali |
2. | Il provider di connessione locale del server non è riuscito a rimanere in ascolto su [ \\.\pipe\SQLLocal\MSSQLSERVER ]. Errore:0x5 Inizializzazione TDSSNIClient non riuscita con errore 0x5, codice di stato 0x40. Inizializzazione client TDSSNIC non riuscita con errore 0x5, codice di stato 0x1. SQL Server non ha potuto generare il thread FRunCM. Controllare il registro degli errori di SQL Server e i registri degli eventi di Windows per informazioni su possibili problemi correlati. Impossibile avviare la libreria di rete a causa di un errore interno nella libreria di rete. Per determinare la causa, esaminare gli errori immediatamente precedenti a questo nel registro degli errori. | SQL Server è stato avviato in precedenza con un account di servizio diverso ed è stato terminato in modo forzato. Si verifica durante il ripristino del database principale. Per correggere ciò, avvia l'istanza con l'account del servizio utilizzato nel passaggio 3 e quindi arresta il servizio in modo regolare. Successivamente, puoi iniziare con il normale account di servizio. |
3. | Impossibile avviare SQLServerAgent (motivo:errore durante la creazione di una nuova sessione). | Concedi le autorizzazioni appropriate all'account SQL Agent |
RIFERIMENTI
Database principale