Condividi tramite


MSSQLSERVER_3168

Si applica a: SQL Server

Dettagli

Attributo Valore
Nome prodotto SQL Server
ID evento 3168
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico LDDB_SYSTEMWRONGVER
Testo del messaggio Impossibile ripristinare il backup del database di sistema nel dispositivo %ls perché è stato creato da una versione del server (%ls) diversa da quella del server in uso (%ls).

Spiegazione

Non è possibile ripristinare un backup di un database di sistema (master, modello o msdb) in una compilazione del server diversa dalla build in cui è stato creato il backup in origine.

Nota

L'installazione di un aggiornamento di manutenzione, ad esempio l'aggiornamento cumulativo o il Service Pack o un GDR, modifica il numero di build del server. Le compilazioni del server sono sempre incrementali.

Possibili cause

Lo schema del database per i database di sistema potrebbe essere modificato nelle compilazioni del server. Per assicurarsi che una modifica dello schema non causi incoerenze, l'istruzione RESTORE confronta il numero di build del server del file di backup con il numero di build del server in cui si sta tentando di ripristinare il backup. Se le compilazioni sono diverse, l'istruzione genera un messaggio di errore "3168" e l'operazione di ripristino termina in modo anomalo.

Alcuni scenari in cui questo problema può verificarsi includono quanto segue:

  • Si tenta di ripristinare un database di sistema nel server A da un backup eseguito nel server B. I server A e B si trovano in build server diverse. Il server A potrebbe ad esempio utilizzare la build della versione originale e il server B potrebbe utilizzare una build del Service Pack 1 (SP1).

  • Si tenta di ripristinare un database di sistema da un backup eseguito nello stesso server. Tuttavia, il server stava eseguendo una compilazione diversa durante l'esecuzione del processo di backup. Ovvero, il server è stato aggiornato dopo la creazione del backup.

Azione utente

Per ovviare a questo problema, esegui la procedura seguente:

Nota

Per le procedure seguenti, Il server A è il server basato su SQL Server di origine in cui viene eseguito il backup e Il server B è il server basato su SQL Server di destinazione in cui si sta tentando di ripristinare il backup:

  1. Determinare la versione del server B (versione B), usando la query seguente:

    SELECT @@VERSION;
    
  2. Eseguire una query simile alla seguente per determinare la versione di SQL Server in esecuzione quando è stato eseguito il backup di origine (versione A):

    RESTORE headeronly FROM disk = 'c:\sqlbackups\masterdb.bak'

  3. Esaminare i valori delle SoftwareVersionMajorcolonne , SoftwareVersionMinore SoftwareVersionBuild per determinare la compilazione del server di origine usato al momento dell'esecuzione del backup. Si supponga, ad esempio, che i valori siano i seguenti:

    • SoftwareVersionMajor: 15
    • SoftwareVersionMinor: 0
    • SoftwareVersionBuild: 4236 In questo caso, la versione di SQL Server di origine quando è stato eseguito il backup è 15.0.4236.
  4. Usare le tabelle dell'elenco delle versioni complete di SQL Server o il foglio di calcolo delle compilazioni di Excel per determinare la versione di SQL Server a cui corrisponde la compilazione. Ad esempio, 15.0.4236 esegue il mapping a SQL Server 2019 CU16+GDR (versione A).

  5. Usare una delle seguenti opzioni:

    • Se la versione A è maggiore della versione B, usare le informazioni contenute nella cronologia degli aggiornamenti e delle versioni più recenti per SQL Server per aggiornare Il server B alla stessa build della versione A.

    • Se la versione A è minore della versione B, rimuovere temporaneamente gli aggiornamenti successivi attenendosi alla procedura seguente:

      1. In Pannello di controllo selezionare Programmi > e funzionalità e quindi selezionare Visualizza aggiornamenti installati.

      2. Individuare la voce corrispondente a ognuno dei pacchetti di aggiornamento successivi che corrispondono alla versione B.

      3. Tenere premuto (o fare clic con il pulsante destro del mouse) sulla voce e quindi scegliere Disinstalla.

    • Dopo aver verificato che la versione B sia uguale alla versione A, ripetere l'operazione di ripristino del database master nel server B.

  6. (Scelta consigliata) Aggiornare il server B alla versione più recente disponibile e quindi eseguire un nuovo backup dei database di sistema.

Vedi anche

Limitazioni per il ripristino di database di sistema (SQL Server)

Ripristinare il database master (Transact-SQL)

Il modo più semplice per ricompilare il database master