Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Sincronizzazione tabelle tra 2 db SQL Server
venerdì 03 luglio 2009 - 10.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
ven 3 lug 2009 - 10:58
Vi chiedo una rapida consulenza.
Sto lavorando ad una applicazione che prevede una sincronizzazione di tabelle tra un db SQL Locale ed un db SQL Remoto. Il software si appoggia a dei servizi web per confrontare le sorgenti dati ed eventualmente generare degli update o degli insert.
Questo metodo funziona ma a livello di performance non è il massimo ed avevo intenzione di ottimizzarlo.
Vi chiedo se conoscete degli approcci migliori e consolidati per gestire la sincronizzazione tra tabelle in db SQL Server.
Qualsiasi informazione che avete mi sarà utile. Grazie.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 3 lug 2009 - 11:31
>Vi chiedo una rapida consulenza.
>
>Sto lavorando ad una applicazione che prevede una sincronizzazione
>di tabelle tra un db SQL Locale ed un db SQL Remoto. Il software
>si appoggia a dei servizi web per confrontare le sorgenti dati
>ed eventualmente generare degli update o degli insert.
>
>Vi chiedo se conoscete degli approcci migliori e consolidati
>per gestire la sincronizzazione tra tabelle in db SQL Server.
Ciao,
ma il db locale "vede" quello remoto in TCP/IP? Se sì, fai senza web service..
e ci sono altre soluzioni.
>Qualsiasi informazione che avete mi sarà utile. Grazie.
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
ven 3 lug 2009 - 11:38
Altre soluzioni, del tipo?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 3 lug 2009 - 11:47
>Altre soluzioni, del tipo?
Eh il tutto dipende dal fatto che i db si vedano o meno..
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
ven 3 lug 2009 - 12:12
Mmm non so se mi è molto chiaro il concetto di visibilità...
Comunque il db remoto accetta le connessioni remote ed io posso accederci tranquillamente via TCP/IP.
A questo punto dovrei interfacciarli tra loro. Come mi consigliate di fare?
Non avete da suggerirmi qualche link o documentazione da leggere?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 3 lug 2009 - 12:31
>Comunque il db remoto accetta le connessioni remote ed io posso
>accederci tranquillamente via TCP/IP.
perfetto.. era quello che mi serviva
>A questo punto dovrei interfacciarli tra loro. Come mi consigliate
>di fare?
Puoi seguire varie strade, ti dicevo. Quelle più semplici sono, a mio avviso:
- Creazione di un sinonimo sul DB del destinazione che punta al server sorgente e poi creare una stored procedure (o un t-sql) che sincronizza, schedulato da un JOB
- Creazione di un SSIS che tenga allineate le tabelle schedulato tramite job
- Replica di sql server
che versione di sql hai?
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
ven 3 lug 2009 - 14:44
2005, però la versione locale è Express e quella Remota no.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 3 lug 2009 - 14:51
>2005, però la versione locale è Express e quella Remota no.
Quello che va sincronizzato è il locale?
Solo one way?
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
ven 3 lug 2009 - 15:10
In realtà la sincronizzazione è bidirezionale...nel senso che un parte delle tabelle vanno sincronizzate da locale a remoto mentre altre tabelle vanno sincronizzate da remoto a locale. Dipende da che tipo di operazione si sceglie di fare con il programma.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 3 lug 2009 - 16:39
>In realtà la sincronizzazione è bidirezionale...nel senso che
>un parte delle tabelle vanno sincronizzate da locale a remoto
>mentre altre tabelle vanno sincronizzate da remoto a locale.
>Dipende da che tipo di operazione si sceglie di fare con il programma.
In base ad ogni casistica, farei dei sinonimi su uno dei due db e quindi i linked server che ti servono. In quel modo poi basta scrivere direttamente con stored procedure sugli oggetti puntati dai sinonimi in un senso e leggere i dati letti dagli oggetti puntati dai sinonimi per poi scrivere sul db corrente. Quindi puoi pensare di farti con la CREATE SYNONYM (
http://msdn.microsoft.com/it-it/library/ms177544.aspx
) i tuoi puntatori, previa creazione di LINKED SERVER verso l'altro db server. Poi, le stored procedure che andrai a scrivere useranno direttamente i sinonimi per arrivare agli oggetti "remoti".
Fai attenzione perchè quando crei il linked server, devi usare un utente che possa leggere/scrivere anche sul db remoto.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
gio 16 lug 2009 - 15:48
Ciao torno a risponderti dopo un pò che nel frattempo ho lavorato ad altre cose...ora sto di nuovo studiando questa faccenda della sincronizzazione.
Se ho ben capito, in base a ciò che mi hai detto tu ed in base a ciò che ho letto in giro, ho due strade percorribili per gestire la sincronizzazione. Una è quella che mi hai suggerito tu sfruttando i Linked Servers, l'altra è quella della Merge Replication.
Adesso sto facendo delle prove con i Linked Servers. In pratica mi sono creato un link al db remoto ed ho già visto che riesco a leggere i dati e a scriverli.
Ora stavo pensando a come gestire la sincronizzazione...per me sarebbe l'ideale creare una stored procedure che a partire da una selezione di dati dal db locale (sorgente) li confronti con il db remoto (destinazione). Se il record esiste allora fa un update altrimenti da un insert.
Secondo te questa operazione è facilmente realizzabile attraverso una stored procedure?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 16 lug 2009 - 15:53
>Ciao
ciao
>Ora stavo pensando a come gestire la sincronizzazione...per me
>sarebbe l'ideale creare una stored procedure che a partire da
>una selezione di dati dal db locale (sorgente) li confronti con
>il db remoto (destinazione). Se il record esiste allora fa un
>update altrimenti da un insert.
bene
>Secondo te questa operazione è facilmente realizzabile attraverso una stored procedure?
vedo solo una EXISTS.. se il record con chiave comune non esiste, inserisco, altrimenti vedi se vuoi fare una update.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
gio 16 lug 2009 - 16:29
Della Merge Replication che mi dici?
Ho letto un pò di documentazione, come soluzione mi sembra un pò articolata ma forse ha i suoi vantaggi rispetto all'utilizzo delle stored procedure.
Hai mai avuto modo di vederla in azione? E se si sai segnalarmi qualche tutorial a riguardo?
Scusa per le tante domande e grazie in anticipo per ogni info.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 16 lug 2009 - 18:53
>Della Merge Replication che mi dici?
che evito sempre e comunque le repliche per i problemi di manutenzione che mi hanno sempre dato
>Hai mai avuto modo di vederla in azione? E se si sai segnalarmi qualche tutorial a riguardo?
noi abbiamo una replica transazionale, e sto cercando di rimuoverla con un servizio di distribuzione dati.
>Scusa per le tante domande e grazie in anticipo per ogni info.
ma figurati. Io seguirei un bel job di sql server schedulato, che lancia una sp o un ssis che fa questa operazione di sincronia.
Non ho un bel rapporto con le repliche.
Altra soluzione potrebbe essere il log shipping. Leggi qui se per caso potrebbe andare bene per il tuo caso:
http://msdn.microsoft.com/en-us/library/ms190016
(SQL.90).aspx
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !