Ho table a
e table b
. (SQL Server 2008)T-SQL - Esiste un modo (gratuito) per confrontare i dati in due tabelle?
Entrambe le tabelle hanno lo stesso schema.
Per gli scopi di questa domanda, considerare table a
= la mia tabella di sviluppo locale, table b
= la tabella live.
Devo creare uno script SQL (contenente le istruzioni UPDATE/DELETE/INSERT
) che aggiornerà la tabella b in modo che corrisponda alla tabella a. Questo script verrà quindi distribuito nel database live.
Qualsiasi strumento gratuito là fuori che può fare questo, o meglio ancora un modo in cui posso farlo da solo?
Sto pensando che probabilmente ho bisogno di fare un tipo di join su tutti i campi nelle tabelle, quindi generare SQL dinamico basato su quello.
Qualcuno ha qualche idea?
EDIT
Va bene, ho pensato di chiarire questa domanda un po '.
La tabella che devo sincronizzare è una semplice tabella di ricerca. I dati sono molto semplici e diretti.
Ecco un'idea di quello TABLE A
potrebbe essere simile:
IdFoo Activity IsFoo
1 Foo 1
2 Bar 0
Ecco un'idea di quello TABLE B
potrebbe essere simile:
IdFoo Activity IsFoo
1 Foo 1
2 Bar 1
In sostanza, tutto quello che voglio fare è di aggiornamento che BIT
colonna (IsFoo
) in TABLE B
per abbinare il valore corrispondente in TABLE A
per lo stesso IdFoo.
tenere a mente:
TABLE A
è sulla mia macchina localeTABLE B
è sul server di vivere
Ovviamente ho un backup (affidabile) di TABLE B
sulla mia macchina locale che ho bisogno di script contro, quindi eseguire lo script sul server live.
La tabella ha anche integrità referenziale (altre colonne che non ho mostrato). Il che significa che non posso semplicemente cancellare tutto in TABLE B
e fare un inserto da TABLE A
.
Questo script sarà una volta spento. Quindi non c'è bisogno di fare cose come server collegato, replica, ecc. Apprezzare le risposte, anche se ragazzi. =)
EDIT:
Ok - così sono andato con la risposta di Oleg (VS2010 tecnica Confronta). Veloce, facile e ha un fascino.
Per non dire che le altre risposte non sono corrette. Apprezzo tutte le risposte!
Qualsiasi risposta dipenderebbe molto dal fatto se si dispone di un campo che può essere utilizzato in modo affidabile per abbinare due righe. –
La risposta dipende anche dalla frequenza con cui è necessario eseguire questa operazione e quanto sono grandi i dati? Se si tratta di una cosa una tantum, è sufficiente utilizzare la procedura guidata Importa/Esporta per trasferire la tabella b' in 'table a'. Se si desidera che le modifiche vengano riflesse immediatamente e continuamente, è possibile implementare la replica. – codingbadger