Migrare da SQL Server 2000 al 2012 senza un'istanza 2005 o 2008


11

Ho trovato tre vecchi database seduti su SQL Server 2000 che devo spostare nel 2012. Credo che l'approccio standard sia ripristinare un'istanza del 2005 o del 2008, aggiornare, riesportare e infine ripristinare nel 2012.

Bene, tranne che non abbiamo istanze disponibili nel 2005 o nel 2008.

Esistono soluzioni alternative o altri metodi che potrebbero valere la pena provare?

Per informazione, i database contengono solo 15-20 tabelle e alcune viste, sembrano molto semplici e i backup hanno dimensioni solo di 100-200 MB.



1
è perfettamente legale e coperto dalla licenza di sql installare un'istanza intermedia come "ponte" da aggiornare. nessun utente dovrebbe connettersi ad esso. ...
Rostol,

Risposte:


21

No, non esiste soluzione alternativa all'aggiornamento di un database direttamente dal 2000 al 2012.

Dato che non disponi di una tonnellata di dati, puoi fare tutti i tipi di cose per spostare i dati (ma non il database nel suo insieme), tra cui:

  • Procedura guidata di importazione / esportazione
  • SSIS
  • BCP
  • Query manuali utilizzando un server collegato dal 2012 o un'applicazione

Tuttavia, questi non comportano necessariamente altre cose come utenti, autorizzazioni, ruoli, ecc. E non tutto creerà i tuoi oggetti nel giusto ordine di dipendenza. Quindi sono più lavoro e soggetti a errori. In base alla mia esperienza, varrebbe la pena creare temporaneamente un'istanza intermedia e quindi eseguire due operazioni di backup + ripristino, che saranno più facili, più veloci e meno soggette ad errori rispetto a uno dei metodi sopra descritti.

Se i tuoi database hanno dimensioni inferiori a 10 GB, puoi installare una copia di Express (gratuita) in pochi minuti e utilizzarla. Puoi scaricare 2008 R2 Express qui . Non credo che ci siano funzionalità Enterprise nel 2000 attorno alla struttura del database ecc. Che blocchino quell'aggiornamento (una preoccupazione maggiore per le versioni più moderne).

Se il tuo database è troppo grande per Express, dovresti essere in grado di trovare Developer Edition per circa $ 49 (o anche più economico - ho trovato 2005 su eBay per $ 37 ), o se hai un abbonamento MSDN, dovresti essere in grado di ottenere qualsiasi SKU da lì.

Oppure puoi cavartela usando una versione di valutazione, che è sorprendentemente ancora disponibile per il download per versioni precedenti (ad esempio, ho trovato il 2008 qui ), tuttavia sono al telefono, quindi non sono riuscito a confermare che il download per quella versione funzioni ancora .


Grazie. Dato che la velocità di Internet qui è scarsa, stavo cercando di evitare i download, ma ho trovato i binari di installazione del 2005, quindi immagino che sarà il metodo più veloce.
Lunatik,

no, l'unico veramente utile è il 2008, altrimenti avrai anche bisogno del 2010 dal 2005
Rostol,


@AdamNofsinger stavo per dire al 100% sicuro, l'ho fatto un milione di volte (abbiamo un vecchio SQL 2000 usato da un vecchio sistema) e abbiamo uno scopo appositamente creato 2008 vm per ripristinare i dati prima e poi fare il backup e ripristinare in SQL 2016 ... Ma se Paul Randal dice il contrario ... ma tieni presente che il metodo diretto funziona dal 2005+. non per il 2000 e il 2003 consecutivi.
Rostol,

6

Dichiarare che non c'è soluzione alternativa sembra un po 'prematuro.

Dici che il tuo database contiene solo alcune tabelle e viste. Perché non esportare lo schema di tabelle e viste come istruzioni di creazione SQL ed eseguirle sul database di destinazione? È inoltre possibile esportare i dati effettivi in ​​qualcosa di simile al formato CSV e importarli nel database di destinazione, o forse anche scrivere qualcosa in C # / C ++ / etc per esportare / importare i dati effettivi.

Non avresti bisogno di spendere un centesimo in nuove istanze di SQL Server che non ti occorrono in definitiva.


3
E naturalmente include tutti gli altri oggetti, le procedure memorizzate, i trigger, le funzioni, ecc. Allo stesso modo esiste l'utilità BCP per la copia di dati da e verso un database.
RLF

1
Grazie. Questo è il tipo di cosa che forse speravo, ma DB wrangling non è il mio lavoro quotidiano e non sono troppo sicuro se ci sono altre dipendenze o impostazioni (autorizzazioni utente ecc.) Che non verrebbero copiate se io ho appena esportato le tabelle ecc.
Lunatik,

4
Abbastanza giusto, ho aggiornato la mia risposta. Continuo a pensare che una soluzione alternativa sia molto più lavoro rispetto alla semplice creazione temporanea di un'istanza e l'esecuzione di due operazioni di backup + ripristino affidabili e non soggette a errori. (Inoltre, questo non sembra riguardare il denaro , dal momento che l'OP ha già binari del 2005 e un database così piccolo che dovrebbe comunque essere migrato usando SQL Express.)
Aaron Bertrand

3

No, non è possibile migrarlo direttamente dal 2000 al 2012.

Quello che puoi fare è installare un'istanza temporanea di 2005 OR 2008 oR 2008R2, ripristinare qui il database 2000. Una volta terminato, è ora possibile eseguire l'aggiornamento dall'istanza installata eseguendo il backup del database da tale istanza e ripristinandolo su SQL Server 2012.

Dovrai effettuare la migrazione in due passaggi:

  • Passaggio 1: eseguire ad esempio una prima migrazione da SQL 2000 a SQL 2008. È necessario essere SQL 2000 SP4, quindi seguire questo passaggio: Migrazione da SQL Server 2000 a SQL Server 2008

  • Passaggio 2: eseguire una seconda migrazione da SQL Server 2008 a 2012.


0

Dici che "hai trovato tre vecchi database seduti su SQL Server 2000", il che mi porta a credere che hai solo bisogno dei dati. Immagino che se fossero gestiti per uno scopo, lo sapresti. In questo caso, ignora tutte le domande degli utenti, della sicurezza, ecc.

Importa / Esporta procedura guidata tutte le tabelle Scrive le procedure e le viste memorizzate Controlla i piani di manutenzione e i processi agente semplicemente per documentare i processi che potresti voler esaminare in seguito.


0

Non è possibile migrare direttamente da SQL Server 2000 a SQL Server 2012 e, se si tenta di farlo, verrà visualizzato il seguente numero di errore 3169, relativo a problemi di compatibilità.

La migrazione a SQL Server 2012 può essere eseguita da una delle seguenti versioni (versioni minime) SQL Server 2005 SP4 o SQL Server 2008 SP2 o SQL Server 2008 R2 SP1.

Quindi, il primo passo per migrare da SQL Server 2000 a una di quelle versioni, ho trovato un Upgrade Advisor per SQL Server 2008 nel seguente link . Per assicurarsi che tutto funzioni correttamente prima di iniziare il processo di ripristino, è necessario eseguire l'applicazione. Quindi "Avvia Upgrade Advisor Analysis Wizard" e segui i passaggi della procedura guidata.

Dopo aver ottenuto il report, è necessario ripristinare il database su SQL Server 2005 SP4 o SQL Server 2008 SP2 o SQL Server 2008 R2 SP1 di destinazione ed eseguirne il livello di compatibilità (è possibile trovarlo nell'opzione del database). Per gli accessi a SQL Server, seguire le istruzioni nel seguente collegamento .

Al termine, ora è necessario migrare a SQL Server 2012 ripetendo gli stessi passaggi dal server a cui è stata eseguita la prima migrazione.


0

Innanzitutto, sono d'accordo che non dovresti migrare direttamente dal 2000 al 2012. Penso che questo processo sia stato coperto bene. Volevo suggerirti di scoprire con certezza se qualcuno sta usando i database e per cosa li sta usando. È possibile che non vengano utilizzati. Succede e se è così, allora non hai preoccupazioni. È possibile che l'aggiunta di 2 o 3 tabelle e i dati (per il 2000 utilizzi bcp se vuoi che i dati per una singola tabella siano semplici e affidabili) in un database esistente del 2012 soddisferebbero le esigenze degli utenti. Se lo fai, crea le nuove tabelle in un database 2012 e bcp i dati che devi csv, puoi ricollegarli se lo desideri. Se devi migrare più di una tabella o due, il modo più semplice, sicuro e migliore è eseguire la migrazione in due passaggi. Don'


Dovresti sapere che lo scripting dello schema nel 2000 non era accurato al 100%. Ricordo di aver sempre dovuto modificare lo script.
dkh63493,
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.