it-swarm.it

Declassamento da SQL Server 2008 a 2005

I file di database creati utilizzando SQL 2008 non sono compatibili con il 2005. Esistono soluzioni?

32
Sevki

Non sono necessari strumenti di terze parti. SQL Server 2008 Management Studio ci ha fornito uno strumento molto potente per convertire verso il basso un database perché hanno aggiunto un'opzione "Dati script" alla procedura guidata "Database script".

Fai clic con il pulsante destro del mouse sul DB in SQL2008 SSMS e vai su Attività, quindi "Genera script"

Segui la procedura guidata, assicurati di scegliere "Vero" per "Dati script" nelle opzioni tabella/vista. Scegli tutti gli oggetti, quindi esegui lo script che crea sul server 2005. (Tieni presente che lo script creato potrebbe essere massiccio se il database originale è molto grande!)

Si noti che è anche possibile eseguire la procedura guidata su un server SQL2005 per convertire un database SQL2005 in SQL2000 (ovviamente occorrerebbero gli strumenti 2008 installati sulla workstation).

16
BradC

È possibile BCP i dati da un'istanza di SQL Server a un'altra istanza. Sarebbe il modo più veloce per copiare i dati da una versione all'altra. A seconda del volume di dati, potrebbe richiedere molto tempo.

16

Sfortunatamente non esiste un modo diretto, che conosco, per eseguire il downgrade di un DB dal formato del 2008 a quello del 2005.

Il modo in cui l'ho fatto in passato (in realtà con versioni precedenti di SQL Server, ma il processo sarà lo stesso) è:

  1. Ripristinare il DB su un'istanza SQL2008 se non già fatto
  2. Crea un DB vuoto con le strutture corrette (tabelle, indici, vincoli, viste, proc, trigger, ...) su un'istanza SQL2005. Si spera che sia possibile farlo dalla propria procedura di compilazione e/o codice sorgente esistente, ma in caso contrario è possibile utilizzare SQL Server Manager per creare script per tutto nel DB 2005 ed eseguire il risultato su uno vuoto nell'istanza 2008.
  3. Assicurati che le due istanze possano vedersi (ovvero che non ci siano firewall che bloccano le connessioni se le istanze si trovano su macchine diverse) e collegale usando sp_addlinkedserver .
  4. Copia tutti i dati da un DB all'altro. Se non ci sono vincoli di chiave esterna e problemi simili nei trigger di cui preoccuparsi, puoi semplicemente collegare i DB insieme e scorrere l'elenco delle tabelle (selezionandoli da sys.objects) ed eseguire
    INSERT destinationserver.destinationdb.schema.table SELECT * FROM sourcedb.schema.table
    (o INSERT schema.table SELECT * FROM sourceserver.sourcedb.schema.table se hai collegato le istanze in quel modo)
    per ogni tabella. Se hai coerenza tra tabelle che impone vincoli e trigger, dovrai ovviamente essere un po 'più intelligente sull'ordinamento di queste operazioni, soprattutto se hai vincoli ciclici come una tabella con un vincolo basato su se stesso (una gerarchia di mantenimento dati, come possibile esempio).

Potrebbe essere più efficiente copiare prima i dati e aggiungere tutte le altre strutture (indici, processi, trigger, ...) dopo il passaggio 3. In questo modo si evitano i problemi di ordinamento dell'inserimento di righe causati da vincoli e trigger e la creazione di indici end dovrebbe in teoria essere più veloce della loro creazione poiché tutti i dati vengono aggiunti, anche se se si dispone di indici cluster sulle tabelle, crearli prima di aggiungere i dati poiché non sarebbero più veloci da creare dopo il fatto.

Ovviamente tutto ciò presuppone che nessuno dei tuoi oggetti utilizzi funzionalità specifiche di SQL 2008 - se lo fanno, spero che scoprirai e risolverai tali cose quando si verificano errori durante la ricostruzione dello schema. Se uno qualsiasi dei tuoi codici si basa su un comportamento ufficialmente indefinito che sembra essere variato tra le versioni di SQL Server, potresti avere alcuni bug molto più sottili ed elusivi da cercare e risolvere in seguito.

15
David Spillett

Ho affrontato una situazione simile e ho utilizzato Database Publishing Wizard per lo schema di script e i dati per SQL Server 2005 dal database di SQL Server 2008.

SQL Server Hosting Web Service (e toolkit)

Procedura guidata di pubblicazione del database

7
CoderHawk

Devi prima eseguire lo script del database e assicurarti che sulla versione specifichi il tipo a cui desideri effettuare il downgrade. E per copiare i dati dalla versione superiore alla versione inferiore, il confronto dei dati SQL ti farà il trucco per te.

In bocca al lupo!

1
Mbongeni