Migrazione dati da mssql a mysql

giovedì 12 luglio 2007 - 17.25

killer Profilo | Newbie

ciao voi come fare ste per far passsare da mssql 2005 express a mysql i dati? nel senso che dovrei in base all aggiornamento del db mssql in sincrono aggiornare un database mysql su tot tabelle e campi...e siste un modo con qualche store o sintassi SQL?

ho avuto un idea...potrebbe anche andare ma ha molti difetti..secondo me su database enormi..
poi secondo voi e possibile intersecare un aquery basata su 2 database differenti cioe

partire da mssql_query(select nom from tabella where campo NOT IN (mysql_query(select nome campo from database));

una cosa del genere è possibile secondo voi? ciao e grazie

PS(la fantasia non mi manca)

lbenaglia Profilo | Guru

>dovrei in base all aggiornamento
>del db mssql in sincrono aggiornare un database mysql su tot
>tabelle e campi...e siste un modo con qualche store o sintassi
>SQL?

Ciao Killer,

ti sconsiglio fortemente di eseguire un aggiornamento sincrono in quanto la transazione verrà conclusa al termine della scrittura sul database remoto, allungando a dismisura i tempi con il rischio di diminuire enormemente la scalabilità del sistema.

Questo genere di operazioni è sempre meglio eseguirle in modo asincrono, schedulando un job di sincronizzazione eseguito ogni tot tempo.

L'operazione è fattibile definendo in SQL Server un linked server a MySQL ed identificando gli oggetti remoti utilizzando il four-part name (server.database.schema.oggetto).
Sui Books Online troverai tutto quello che ti serve, iniziando dal seguente paragrafo:

"Linking Servers"
http://msdn2.microsoft.com/en-us/library/ms188279.aspx

>ciao e grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

killer Profilo | Newbie

ciao e grazie adesso provo ..avevo tentato qualcosa..ma non andava...uhm...comunque do un occhio al link che mi ahai detto tu...per il momento avrei risolto con un barbatrucco...pero preferirei utilizzare il metodo che mi ha consigliato...uhm certo pero su un db con 10 000 000 record...ad esempio non potrebbe impallarsi un pochino il server? tu cosa consigli?

ciao e grazie

lbenaglia Profilo | Guru

>uhm certo pero su un db con 10 000 000
>record...ad esempio non potrebbe impallarsi un pochino il server?
>tu cosa consigli?

Ovviamente ad ogni passata del job, andrai a sincronizzare SOLO le nuove righe che devono essere spostate su MySQL.
Potresti prevedere una colonna che contenga lo stato della modifica (U - Update, I - Insert) in modo da sapere come comportarti; se esegui anche cancellazioni a questo punto ti conviene preparare una tabella di log contenente le colonne della tabella base e la colonna di status (che in questo caso potrà assumere anche il valore D - Delete) che andrai a popolare in modo sincrono con uno o più triggers.
Il Job andrà ad interrogare la tabella di log per stabilire il tipo di sincronizzazione che deve essere effettuata.
In sostanza generi una sorta di coda...

>ciao e grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

killer Profilo | Newbie

mi potrresti fare un esempio? ho provato a seguire la procedura ma mi da errore sul server
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5