Al momento sei offline in attesa che la connessione Internet venga ristabilita

Non è possibile ripristinare i backup del database di sistema a una build diversa di SQL Server

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

264474
Sintomi
È Impossibile ripristinare un backup di un database di sistema ( master , modello o msdb ) in una build per server diverso dalla generazione in cui è stato originariamente eseguito il backup. Un tentativo di eseguire un ripristino di tali causa il seguente messaggio di errore si verifichi:
Server: Messaggio 3168, livello 16, stato 1, riga 1
Impossibile ripristinare il backup del database di sistema sul dispositivo d:\temp\master.bak perché è stato creato con una versione diversa del server (134217904) rispetto a questo server (134217920).
Server: Messaggio 3013, livello 16, stato 1, riga 1
RESTORE DATABASE è stato terminato in modo anomalo.
Cause
È possibile che lo schema di database per i database di sistema viene modificato tra build del server. Per poter garantire che questa modifica dello schema non provochi eventuali incoerenze, uno dei controlli primo che esegue il comando RESTORE è un confronto tra il numero di build del server nel file di backup e il numero di build del server su cui l'utente sta tentando di eseguire il ripristino. Se le due versioni sono diverse, il messaggio di errore e l'operazione di ripristino viene interrotta in modo anomalo.

Nota L'installazione di un service pack o un aggiornamento rapido (hotfix) di generazione modifiche il numero di build del server e server build sono sempre incrementale.

Ecco alcuni scenari in cui questo problema può verificarsi:
  • Un utente tenta di ripristinare un database di sistema sul Server A da un backup sul server server b. A e B sono generazioni di server diverso. Ad esempio, Server A potrebbe essere una versione RTM e Server B potrebbe essere un service pack 1 (SP1) generazione.
  • Un utente tenta di ripristinare un database di sistema da un backup sullo stesso server. Tuttavia, il server è stato in esecuzione una compilazione differente quando si è verificato il backup. Vale a dire il server è stato aggiornato poiché è stato eseguito il backup.
Workaround
Il processo di ripristino in tale situazione è piuttosto coinvolti e viene utilizzata solo come ultima risorsa.

Il primo passaggio il tentativo di risolvere il problema consiste nel determinare la generazione corrente del server e SQL Server basate su cui è stato eseguito il backup.

Microsoft SQL Server 2000 e di Microsoft SQL Server 2005 forniscono due metodi seguenti per determinare la generazione di SQL Server corrente:
  • metodo 1
    SELECT @@version
    questo codice restituisce testo simile a:
    Microsoft SQL Server  2000 - 8.00.192 (Intel X86)Jul 31 2000 15:47:46Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: )(1 row(s) affected)
  • metodo 2
    SELECT SERVERPROPERTY('ProductVersion')
    questo codice restituisce testo simile a:
    8.00.192(1 row(s) affected)
Allo scopo di questo articolo, questo numero di build viene fatto riferimento come il "SQL Server Build" nella parte restante di questo articolo.

È possibile determinare la generazione in cui durante il backup utilizzando il comando riportato di seguito il file di backup:
RESTORE HEADERONLYFROM DISK = 'd:\temp\master176.bak'
in output generato, le colonne seguenti tre (3) informazioni il server di generazione:
SoftwareVersionMajor SoftwareVersionMinor SoftwareVersionBuild-------------------- -------------------- --------------------8                    0                    176The actual output has several other columns; however, only the columns that are of interest are included in this article for clarity.
allo scopo di questo articolo, questo numero di build viene fatto riferimento come il "backup build" per il resto di questo articolo.

Nell'esempio, il "SQL Server" indica 8.00.192, mentre la "backup" indica 8.00.176. Poiché le due versioni sono diverse, l'operazione di ripristino non è consentito e messaggio di errore 3168.

Il processo di ripristino per risolvere questo problema varia in base su database di sistema l'utente sta tentando di ripristinare. Come misura precauzionale, Microsoft consiglia che si faccia un backup dei tutti i database esistenti (database di sistema e utente) prima di procedere con uno di questi passaggi.

Se il tentativo di ripristino è nel database master , è possibile utilizzare la procedura seguente per tentare un ripristino:
  1. Scollegare tutti i database utente presente nel sistema utilizzando la procedura sp_detach_db memorizzati. Per ulteriori informazioni sulla disconnessione database utente, fare riferimento all'argomento "Collegamento e scollegamento di database" nella documentazione in linea di SQL Server 2000. Se si utilizza SQL Server 2005, vedere la "Detaching e collegamento di un database" nella documentazione in linea di SQL Server 2005. Come un controllo incrociato, la query seguente restituisce un elenco di tutti i database utente sul sistema:
    SELECT name FROM SYSDATABASESWHERE dbid > 4
  2. Backup i database msdb e model nel sistema utilizzando i comandi seguenti:
    BACKUP DATABASE MSDB TO DISK = '<backup device>' WITH NOINIT, NOSKIPBACKUP DATABASE MODEL TO DISK = '<backup device>' WITH NOINIT, NOSKIP
  3. Se il "backup build" è maggiore del "SQL Server Build", installare tutti i necessari service pack o esegue lo build di aggiornamento rapido (hotfix) per ripristinare il software del server di "backup build" che è stato determinato in precedenza. Procedere al passaggio 6.
  4. Rimuovere SQL Server 2000 o SQL Server 2005. Per ulteriori informazioni sulla rimozione di SQL Server 2000, fare riferimento all'argomento "How to remove SQL Server 2000" nella documentazione in linea di SQL Server 2000.
  5. Reinstallare SQL Server 2000 o la build di SQL Server 2005 e tutti i necessari service pack o aggiornamento rapido (hotfix) per ripristinare il software del server di "backup build" che è stato determinato in precedenza.
  6. Avviare il server in modalità utente singolo e ripristinare il database master dal file di backup per la generazione. Per istruzioni sul ripristino del database master , fare riferimento all'argomento "Ripristino del master database da un backup corrente" nella documentazione in linea di SQL Server 2000. Se si utilizza SQL Server 2005, vedere "Ripristino del database master" nella documentazione in linea di SQL Server 2005.
  7. Dopo aver ripristinato correttamente il database master , è necessario arrestare e riavviare il servizio SQL Server.
  8. Se il "backup build" è maggiore del "SQL Server Build", andare al passaggio 10.
  9. Riapplicare eventuali service pack o di una build di aggiornamento rapido (hotfix) necessari per ripristinare il software del server "build SQL Server".
  10. Ripristinare i database msdb e model dai backup creati nel passaggio 2. Se si utilizza SQL Server 2005, vedere "Ripristino del database model e msdb" nella documentazione in linea di SQL Server 2005.
  11. Ricollegare tutti i database utente utilizzando la procedura sp_attach_db memorizzati. Per ulteriori informazioni su come ricollegare il database, fare riferimento all'argomento "Collegamento e scollegamento di database" nella documentazione in linea di SQL Server 2000.
Le modifiche apportate al database master dopo che è stato eseguito il backup di master sono ora persa e deve essere riapplicato manualmente.
Se si tenta l'operazione di ripristino il modello o il database msdb , è possibile utilizzare la procedura seguente per risolvere il problema. Per illustrare questa procedura con un esempio, in questo articolo si riferisce al server originale in cui uno di questi database, ad esempio msdb , deve essere ripristinato come server a. Questa procedura implica l'installazione di SQL Server in un diverso Server B per evitare il messaggio di errore 3168. Il presupposto naturalmente, è di solo avere un backup valido da un build precedente per il msdb su server a.
  1. Installare SQL Server 2000 nel Server B (con le stesse regole di confronto Impostazioni Server A) e service pack o build di aggiornamento rapido (hotfix) necessari per il software del server per il "backup build".
  2. Dopo l'installazione di SQL Server 2000, avviare il servizio SQL Server e provare a ripristinare il database msdb dal file di backup. Il funzionamento di ripristino se il server di generare e la generazione in cui è stato eseguito il backup sono identici.
  3. Se il "backup build" è maggiore del "corrente build", andare al passaggio 5.
  4. Dopo un ripristino, aggiornamento da SQL Server 2000 nel Server B applicando eventuali service pack o aggiornamento rapido (hotfix) Crea necessari per ripristinare il software del server di "corrente build".
  5. Al termine dell'aggiornamento, eseguire un backup del database msdb . A questo punto sarà possibile ripristinare da questa copia di backup sul Server A, considerando che la generazione del server su cui è stato eseguito il backup e il "corrente build" sono identici.
La stessa procedura funziona per nonché il database di modello . Anche in questo caso, tutte le modifiche apportate per questi database poiché è stato eseguito il backup vengono perse e devono essere riapplicate manualmente.
Informazioni
È sempre una buona norma disporre di una strategia di backup corrente, effettiva. Questa limitazione è ancora un altro esempio di una buona strategia di backup è importante. Luce di questa limitazione, è necessario eseguire un backup del database di sistema non appena si aggiorna il server quando si installa un service pack o di una build di aggiornamento rapido (hotfix).

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 264474 - Ultima revisione: 02/22/2007 22:33:50 - Revisione: 6.4

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • kbmt kbbackup kbprb KB264474 KbMtit
Feedback
>