Condividi tramite


Ripristinare il database master (Transact-SQL)

Si applica a:SQL Server

Questo articolo spiega come ripristinare il database master da un backup completo del database.

Avviso

In caso di ripristino di emergenza, l'istanza in cui il database master viene ripristinato deve essere il più vicino possibile a una corrispondenza esatta con l'originale. Come minimo, questa istanza di ripristino deve essere la stessa versione, edizione e livello di patch e deve avere la stessa serie di funzionalità e la stessa configurazione esterna (nome host, appartenenza al cluster e così via) dell'istanza originale. In caso contrario, ciò può risultare in un comportamento indefinito dell'istanza di SQL Server, con un supporto funzionale incoerente e non è garantito che sia praticabile.

Ripristinare il database master

  1. Avviare l'istanza del server in modalità utente singolo.

    È possibile avviare SQL Server usando i parametri di avvio -m o -f. Per altre informazioni sui parametri di avvio, vedere Opzioni di avvio del servizio motore di database.

    Da un prompt dei comandi eseguire i comandi seguenti e assicurarsi di sostituire MSSQLXX.instance con il nome di cartella appropriato:

    cd C:\Program Files\Microsoft SQL Server\MSSQLXX.instance\MSSQL\Binn
    sqlservr -c -f -s <instance> -mSQLCMD
    
    • Il parametro -mSQLCMD garantisce che solo sqlcmd possa connettersi a SQL Server.
    • Per il nome di un'istanza predefinita, utilizzare -s MSSQLSERVER
    • -c avvia SQL Server come applicazione per ignorare il gestore di controllo del servizio e ridurre il tempo di avvio

    Se l'istanza di SQL Server non può essere avviata a causa di un database master danneggiato, prima è necessario ricompilare i database di sistema. Per altre informazioni, vedere Ricompilare database di sistema.

  2. Connettersi a SQL Server usando sqlcmd da un'altra finestra del prompt dei comandi:

    sqlcmd -S <instance> -E -d master
    
  3. Per ripristinare un backup completo del database di master, utilizzare l'istruzione RESTORETransact-SQL seguente:

    RESTORE DATABASE master FROM <backup_device> WITH REPLACE;
    

    L'opzione REPLACE indica a SQL Server di ripristinare il database specificato anche quando esiste già un database con lo stesso nome. Il database esistente, se presente, viene eliminato. In modalità utente singolo è consigliabile immettere l'istruzione RESTORE DATABASEnell'utilità sqlcmd. Per altre informazioni, vedere Usare sqlcmd.

    Importante

    Dopo il ripristino di master, l'istanza di SQL Server si arresta e termina il processo di sqlcmd. Prima di riavviare l'istanza del server, rimuovere il parametro di avvio in modalità utente singolo. Per altre informazioni, vedere Gestione configurazione SQL Server: Configurare le opzioni di avvio del server.

  4. Riavviare l'istanza del server normalmente come servizio, senza usare parametri di avvio.

  5. Proseguire con gli altri passaggi di recupero, quali il ripristino di altri database, il collegamento dei database e la correzione delle mancate corrispondenze tra utenti.

Esempi

Nell'esempio seguente viene ripristinato il database master nell'istanza predefinita del server. In questo esempio si presuppone che l'istanza del server sia già in esecuzione in modalità utente singolo. L'esempio avvia sqlcmd ed esegue un'istruzione RESTORE DATABASE che ripristina un backup completo del database di master da un dispositivo disco: Z:\SQLServerBackups\master.bak.

Per un'istanza denominata, il comando sqlcmd deve specificare l'opzione -S<computer-name>\<instance-name> .

C:\> sqlcmd
1> RESTORE DATABASE master FROM DISK = 'Z:\SQLServerBackups\master.bak' WITH REPLACE;
2> GO