Condividi tramite


Ricompilare i database di sistema

I database di sistema devono essere ricompilati per risolvere i problemi di danneggiamento nei database master, model, msdb o di sistema delle risorse o per modificare le regole di confronto a livello di server predefinite. Questo argomento fornisce istruzioni dettagliate per ricompilare i database di sistema in SQL Server 2014.

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

Quando i database di sistema master, model, msdb e tempdb vengono ricostruiti, i database vengono eliminati e ricreati nel percorso originale. Se nell'istruzione di ricompilazione vengono specificate nuove regole di confronto, i database di sistema vengono creati utilizzando tale impostazione delle regole di confronto. Le eventuali modifiche apportate dall'utente ai database vanno perdute. Ad esempio, è possibile che nel database master siano presenti oggetti definiti dall'utente, processi pianificati in msdb o modifiche alle impostazioni predefinite del database nel database modello.

Prerequisiti

Prima di ricompilare i database di sistema, effettuare le attività seguenti per assicurarsi che sia possibile ripristinare le impostazioni correnti dei database.

  1. Registrare tutti i valori di configurazione a livello di server.

    SELECT * FROM sys.configurations;  
    
  2. Registrare tutti i Service Pack e gli hotfix applicati all'istanza di SQL Server e la collatione attuale. È necessario riapplicare questi aggiornamenti dopo la ricompilazione dei database di sistema.

    SELECT  
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,  
    SERVERPROPERTY('ProductLevel') AS ProductLevel,  
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,  
    SERVERPROPERTY('Collation') AS Collation;  
    
  3. Registrare il percorso corrente di tutti i file di dati e di log relativi ai database di sistema. La ricostruzione dei database di sistema installa tutti i database di sistema nella loro posizione originale. Se i file di dati o di log dei database di sistema sono stati spostati in un percorso diverso, è necessario spostarli di nuovo.

    SELECT name, physical_name AS current_file_location  
    FROM sys.master_files  
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));  
    
  4. Individuare il backup corrente dei database master, model e msdb.

  5. Se l'istanza di SQL Server è configurata come server di distribuzione di replica, individuare il backup corrente del database di distribuzione.

  6. Assicurarsi di disporre delle autorizzazioni appropriate per ricompilare i database di sistema. Per eseguire questa operazione, è necessario essere membri del ruolo predefinito del sysadmin server. Per altre informazioni, vedere Ruoli a livello di server.

  7. Verificare che nel server locale siano presenti copie dei file master, model, dati msdb e modelli di log. Il percorso predefinito per i file modello è C:\Programmi\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\Binn\Templates. Questi file vengono utilizzati durante il processo di ricompilazione e devono essere presenti affinché l'installazione venga completata correttamente. Se non sono disponibili, eseguire la funzione di riparazione di Setup oppure copiare manualmente i file dai supporti di installazione. Per individuare i file nel supporto di installazione, passare alla directory della piattaforma appropriata (x86 o x64) e quindi passare a setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL. X\MSSQL\Binn\Templates.

Ricompilare i database di sistema

La procedura seguente ricompila i database di sistema master, model, msdb e tempdb. Non è possibile specificare i database di sistema da ricompilare. Per le istanze cluster, questa procedura deve essere eseguita nel nodo attivo e la risorsa di SQL Server nel gruppo di applicazioni cluster corrispondente deve essere portata offline prima di eseguire la procedura.

Questa procedura non ricompila il database delle risorse. Vedere la sezione "Ricompilare la procedura del database delle risorse" più avanti in questo argomento.

Per ricompilare i database di sistema per un'istanza di SQL Server:

  1. Inserire il supporto di installazione di SQL Server 2014 nell'unità disco oppure, da un prompt dei comandi, modificare le directory nel percorso del file setup.exe nel server locale. Il percorso predefinito nel server è C:\Programmi\Microsoft SQL Server\120\Setup Bootstrap\Release.

  2. Da una finestra del prompt dei comandi immettere il comando seguente. Le parentesi quadre indicano i parametri facoltativi Non inserire le parentesi. Se si utilizza un sistema operativo Windows con Controllo account utente abilitato, per eseguire il programma di installazione è necessario disporre di privilegi elevati. Il prompt dei comandi deve essere eseguito come Amministratore.

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]

    Nome del parametro Descrizione
    /QUIET o /Q Specifica che il programma di installazione viene eseguito senza alcuna interfaccia utente.
    /ACTION=REBUILDDATABASE Specifica che il programma di installazione ricrea i database di sistema.
    /INSTANCENAME=InstanceName Nome dell'istanza di SQL Server. Per l'istanza predefinita, immettere MSSQLSERVER.
    /SQLSYSADMINACCOUNTS=accounts Specifica i gruppi di Windows o i singoli account da aggiungere al ruolo predefinito del sysadmin server. Quando si specificano più account, separarli con uno spazio vuoto. Ad esempio, immettere BUILTIN\Administrators MyDomain\MyUser. Quando si specifica un account che contiene uno spazio vuoto all'interno del nome dell'account, racchiudere l'account tra virgolette doppie. Ad esempio, immettere NT AUTHORITY\SYSTEM.
    [ /SAPWD=StrongPassword ] Specifica la password per l'account di SQL Server sa . Questo parametro è necessario se l'istanza usa la modalità autenticazione mista (autenticazione di SQL Server e di Windows).

    ** Nota sulla sicurezza ** L'account sa è un account SQL Server noto ed è spesso destinato a utenti malintenzionati. È molto importante usare una password complessa per l'accesso sa .

    Non specificare questo parametro per la modalità di autenticazione di Windows.
    [ /SQLCOLLATION=CollationName ] Vengono specificate nuove regole di confronto a livello di server. Questo parametro è facoltativo. Se non viene specificato, verranno utilizzate le regole di confronto correnti del server.

    **Importante** La modifica delle regole di confronto a livello di server non modifica le regole di confronto dei database utente esistenti. Tutti i nuovi database utente creati utilizzeranno le nuove regole di confronto per impostazione predefinita.

    Per altre informazioni, vedere Impostare o modificare le regole di confronto del server.
  3. Al termine della ricompilazione dei database di sistema, verrà visualizzato di nuovo il prompt dei comandi senza messaggi. Esaminare il file di log Summary.txt per verificare che il processo sia stato completato correttamente. Questo file si trova in C:\Programmi\Microsoft SQL Server\120\Setup Bootstrap\Logs.

Attività successive alla ricostruzione

Dopo aver ricompilato il database potrebbe essere necessario eseguire le attività aggiuntive seguenti:

  • Ripristinare i backup completi più recenti dei database master, model e msdb. Per altre informazioni, vedere Backup e ripristino di Database di sistema (SQL Server).

    Importante

    Se sono state modificate le regole di confronto del server, non ripristinare i database di sistema. In caso contrario, le nuove regole di confronto verranno sostituite con quelle precedenti.

    Se un backup non è disponibile o se il backup ripristinato non è aggiornato, ricrea gli elementi mancanti. Ad esempio, ricreare tutte le voci mancanti per i database utente, i dispositivi di backup, gli account di accesso di SQL Server, gli endpoint ecc. Il modo più efficace per ricreare le voci consiste nell'eseguire gli script originali con cui sono state create.

Importante

È consigliabile proteggere gli script per impedire che il contenuto venga modificato da utenti non autorizzati.

  • Se l'istanza di SQL Server è configurata come server di distribuzione di replica, è necessario ripristinare il database di distribuzione. Per altre informazioni, vedere Eseguire il backup e ripristino di database replicati.

  • Spostare i database di sistema nei percorsi registrati in precedenza. Per altre informazioni vedere l'articolo Spostare i database di sistema.

  • Verificare che i valori di configurazione a livello di server corrispondano ai valori registrati in precedenza.

Ricompilare il database delle risorse

La procedura seguente ricompila il database di sistema delle risorse. Quando si ricompila il database delle risorse, tutti i Service Pack e le correzioni ad accesso frequente vengono persi e pertanto devono essere riapplicati.

Per ricostruire il database del sistema delle risorse:

  1. Avviare il programma di installazione di SQL Server 2014 (setup.exe) dal supporto di distribuzione.

  2. Nell'area di spostamento a sinistra fare clic su Manutenzione e quindi su Ripristina.

  3. Le regole di supporto per l'installazione e le routine dei file vengono eseguite per garantire che i prerequisiti siano installati nel sistema e che il computer rispetti le regole di convalida dell'installazione. Fare clic su OK o Installa per continuare.

  4. Nella pagina Seleziona istanza selezionare l'istanza da ripristinare e quindi fare clic su Avanti.

  5. Verranno eseguite le regole di riparazione per convalidare l'operazione. Scegliere Avantiper continuare.

  6. Nella pagina Pronto per il ripristino fare clic su Ripristina. Nella pagina Operazione completata è indicato che l'operazione è stata completata.

Creare un nuovo database msdb

Se il msdb database è danneggiato e non si dispone di un backup del msdb database, è possibile creare un nuovo msdb usando lo script instmsdb .

Avvertimento

La ricompilazione del msdb database tramite lo script instmsdb eliminerà tutte le informazioni archiviate in msdb , ad esempio processi, avvisi, operatori, piani di manutenzione, cronologia di backup, impostazioni di gestione basata su criteri, Posta elettronica database, Data Warehouse prestazioni e così via.

  1. Arrestare tutti i servizi che si connettono al motore di database, inclusi SQL Server Agent, SSRS, SSIS e tutte le applicazioni che utilizzano SQL Server come archivio dati.

  2. Avviare SQL Server dalla riga di comando usando il comando : NET START MSSQLSERVER /T3608

    Per ulteriori informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare il Motore di Database, il Servizio Agente di SQL Server o il Servizio Browser di SQL Server.

  3. In un'altra finestra della riga di comando scollegare il msdb database eseguendo il comando seguente, sostituendo <servername> con l'istanza di SQL Server: SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"

  4. Tramite Esplora file di Windows, rinomina i file di database msdb. Per impostazione predefinita, si trovano nella sottocartella DATA per l'istanza di SQL Server.

  5. Usando Gestione della configurazione di SQL Server, arrestare normalmente e riavviare il servizio Motore di database.

  6. In una finestra della riga di comando connettersi a SQL Server ed eseguire il comando : SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install\instmsdb.sql" -o" C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install\instmsdb.out"

    Sostituire <servername> con l'istanza del motore di database. Utilizzare il percorso del file system dell'istanza di SQL Server.

  7. Usando il Blocco note di Windows, aprire il file instmsdb.out e controllare l'output per eventuali errori.

  8. Riapplicare eventuali pacchetti di aggiornamento o hotfix installati sull'istanza.

  9. Ricreare il contenuto utente archiviato nel msdb database, ad esempio processi, avvisi e così via.

  10. Eseguire il backup del msdb database.

Risolvere gli errori di ricompilazione

Gli errori di sintassi e altri errori di runtime vengono visualizzati nella finestra del prompt dei comandi. Esaminare l'istruzione di installazione per rilevare gli errori di sintassi seguenti:

  • Segno di barra mancante (/) davanti a ogni nome di parametro.

  • Mancanza del segno di uguale (=) tra il nome e il valore del parametro.

  • Presenza di spazi vuoti tra il nome del parametro e il segno di uguale.

  • Presenza di virgole (,) o di altri caratteri non specificati nella sintassi.

Al termine dell'operazione di ricompilazione, esaminare i log di SQL Server per rilevare eventuali errori. Il percorso predefinito del log è C:\Programmi\Microsoft SQL Server\120\Setup Bootstrap\Logs. Per individuare il file di log che contiene i risultati del processo di ricompilazione, passare alla cartella Logs dal prompt dei comandi, quindi eseguire findstr /s RebuildDatabase summary*.*. Con questa ricerca sarà possibile trovare tutti i file di log che contengono i risultati della ricompilazione dei database di sistema. Aprire i file di log ed esaminare i messaggi di errore pertinenti.

Vedere anche

Database di sistema