Errore di timeout scaduto durante l'utilizzo della procedura guidata per la copia del database


8

Microsoft mi ha fatto credere che la Procedura guidata per la copia del database di SQL Server 2012 sia il modo migliore per copiare un database di SQL Server 2000 in SQL Server 2012. Dopo alcune ore, sono riuscito a superare alcuni problemi e sono stato in grado di importare da database SQL Server 2000 di medie dimensioni in SQL Server 2012.

Tuttavia, la procedura guidata non riesce costantemente per un database da 30 GB con questi errori:

Messaggio: si è verificato un errore durante il trasferimento dei dati. Vedi l'eccezione interna per i dettagli.
StackTrace: presso Microsoft.SqlServer.Management.Smo.Transfer.TransferData ()
presso Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabaseUsingSMOTransfer ()
InnerException -> Timeout scaduto. Il periodo di timeout è trascorso prima del completamento dell'operazione o il server non risponde.
CREATE DATABASE non riuscito. Non è stato possibile creare alcuni nomi di file elencati. Verifica errori correlati.
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError (eccezione SqlException, booleana breakConnection)
su System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
at System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

Ho ricontrollato, non è un problema di percorso file, autorizzazione o spazio su disco. Penso che il CREATE DATABASEpassaggio richieda circa 2 minuti e la procedura guidata presuppone che l'operazione sia scaduta. Ho creato manualmente un database vuoto con lo stesso percorso e dimensione del file utilizzando SQL, che ha funzionato. È interessante notare che una copia del database da 1 GB non è riuscita con gli stessi errori ed è riuscita al 2 ° tentativo.

Per favore aiuto.


Si prega di vedere la risposta di Aarons. Questo è un modo molto più efficace per il tuo database
Ali Razeghi,

Risposte:


7

Un percorso molto più efficiente rispetto a fare confusione con quella procedura guidata sarebbe quello di:

  1. Effettua un backup completo del tuo database 2000.
  2. Ripristinare su un'istanza di SQL 2005, 2008 o 2008 R2, che supportano tutti i database 2000. È ancora possibile ottenere l' edizione di valutazione di 2008 R2 qui , se non sono presenti istanze applicabili. Si noti che Express non funzionerà in quanto ha una limitazione del file di dati 4GB / 10GB a seconda della versione.
  3. Cambia il livello di compatibilità a qualcosa sopra 80 (90 o 100, a seconda che tu abbia usato 2005 o 2008/2008 R2) usando ALTER DATABASE.
  4. Eseguire un backup completo di questo database dopo che non è più in 80 modalità di compatibilità.
  5. Ripristina questo nuovo backup nell'istanza di SQL Server 2012.
  6. Modificare il livello di compatibilità su 110 e aggiornare le statistiche.
  7. TEST .

Ho installato SQL 2012, va bene se installo SQL 2008 R2 sullo stesso computer? L'ordine di installazione è importante?
Salman A

Sì, puoi installare 2008 R2 sulla stessa macchina, ma per semplificare le cose basta installare il motore di database, senza strumenti client e tutto il resto. È possibile disinstallare l'istanza 2008 R2 dopo aver spostato tutti i database 2000 fuori dal 2000.
Aaron Bertrand

1
Vorrei sconsigliare l'installazione di versioni non necessarie sulle macchine di produzione, ma no, non interferisce ma potresti ricevere alcuni avvisi sui componenti condivisi. Come regola generale, tuttavia, non installare mai nulla su prod che non sia necessario in prod. Aumenta la superficie di sicurezza per gli attacchi, introduce bug e aumenta la gestione.
Ali Razeghi,

1
@Come fai a sapere che la macchina di cui Salman sta parlando è una macchina di produzione? O che non è l'unica macchina disponibile?
Aaron Bertrand

Ecco perché ho specificato 'on prod' anziché semplicemente 'non farlo' e ho risposto 'ma no non interferisce'. Per quanto riguarda solo la macchina disponibile, è possibile installarli anche sui desktop e il suo database è di 30 GB, come indicato. I computer con 30 GB di spazio libero sono piuttosto comuni, ma ancora una volta è stato solo un consiglio, non è difficile "questa è l'unica risposta". Ho guardato il suo blog ed è molto focalizzato sugli sviluppatori, il che significa che c'è un'alta probabilità che non sia coinvolto nelle migliori pratiche di operazioni quanto in un ragazzo di operazioni. Penso che sia un buon consiglio, sono sorpreso da quante persone si dedicano alla produzione quando non devono.
Ali Razeghi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.