Migrare oggetti tra server
Apri in CalíopeCopia tabelle, viste, routine, trigger ed eventi su un altro server, o in un altro database dello stesso.
Dove si trova: Workspace › Strumenti › Migrazione dati
Apri Migrazione dati dalla barra laterale del workspace. Copia tabelle, viste, routine, trigger ed eventi da questa connessione a un altro server, o a un altro database dello stesso.
Scegli cosa copiare nell’albero a sinistra. La sua intestazione ha un filtro per nome: digita parte del nome di un database o di un oggetto per restringere l’elenco senza espandere un database alla volta. Gli oggetti sono raggruppati per tipo (Tabelle, Viste, Routine, Trigger ed Eventi); fare clic su un oggetto lo seleziona, e la casella di ogni database seleziona o deseleziona tutto il suo contenuto, con accanto il numero di oggetti selezionati sul totale. Svuota svuota la selezione. L’ordine lo stabilisce Calíope — tabelle, viste, routine, trigger ed eventi — così ogni oggetto trova già creato ciò da cui dipende.
Scegli dove va. Accanto a Destinazione:, apri Seleziona server di destinazione, scegli una delle connessioni salvate nel Gestore connessioni e premi Connetti. In Nel database, scrivi il database in cui finiranno gli oggetti; vuoto, ogni oggetto mantiene il database che ha nell’origine. Calíope crea quel database se non esiste, e riscrive i riferimenti di una vista perché legga da lì.
Opzioni: Sostituisci nella destinazione elimina tutto ciò che è selezionato prima di creare qualsiasi cosa —prima ciò che dipende dalle tabelle, e le tabelle figlie prima delle madri—, quindi ripetere la stessa migrazione è sicuro; Esporta dati copia le righe di ogni tabella; Salta i controlli FK disattiva il controllo delle chiavi esterne mentre si carica ogni oggetto, così le tabelle possono arrivare in qualsiasi ordine.
Premi Migra. Il registro dà una riga per oggetto, con il database in cui è andato e, per una tabella, le righe copiate. Ferma si arresta tra un oggetto e il successivo.
Le chiavi esterne delle tabelle copiate si creano alla fine, quando ci sono tutte con le loro righe: l'ordine in cui arrivano non conta più.
Tra famiglie di motori diverse un avviso accanto a Migra lo dice prima di eseguire qualsiasi cosa: il DDL di un motore l'altro non lo capisce, quindi non si crea nulla. Si copiano solo righe, in tabelle con lo stesso nome che esistono già nella destinazione, abbinando le colonne per nome; una tabella che la destinazione non ha, o un oggetto che non è una tabella, si salta e il registro lo dice.
SQL Server
Una colonna IDENTITY conserva i suoi valori (Calíope accende IDENTITY_INSERT durante la copia), ma non il suo contatore: nella destinazione la riga successiva riparte dal valore più alto copiato. Ogni oggetto finisce nel suo schema, che viene creato se non esiste. Con solo il nome di un database in Nel database, ogni oggetto conserva il suo schema: demo.dbo va in copia.dbo, e demo.rrhh in copia.rrhh.
PostgreSQL
Qui un database è uno schema del database connesso: Nel database indica lo schema in cui vanno gli oggetti, e viene creato se non esiste. I tipi usati dalle tabelle copiate —un ENUM, un dominio— si creano prima; uno che esiste già nella destinazione si conserva così com’è, perché rifarlo obbligherebbe a eliminare ogni colonna che lo usa. Il search_path di una funzione copiata punta allo schema di destinazione, quindi i suoi trigger scrivono lì e non nell’origine.
> Se la destinazione è lo stesso server dell’origine e un oggetto finirebbe nel suo stesso database, Migra resta disattivato e un avviso spiega perché: con Sostituisci nella destinazione, la copia eliminerebbe l’originale prima di leggerne le righe.
> Se il server che ti serve non compare nel selettore, aggiungilo prima nel Gestore connessioni e riapri Migrazione dati.
Parole chiave: migrare, migration, copiare, spostare, server di destinazione, connessione di destinazione, selettore