2015-06-23 16 views
5

Il mio progetto ha attualmente un database che contiene diverse tabelle, la più importante delle quali ha una colonna binaria con voci molto grandi (che rappresentano oggetti C# serializzati). Ci sono un gran numero di voci nel database di produzione e, quando si esegue il debug, è spesso necessario trascinare queste voci nel database di sviluppo locale (poiché il debug remoto sembra non funzionare, che è un problema separato).Confronto dati Visual Studio con meno colonne

Se si tenta di confrontare i database locali e di produzione su questa tabella con tutte le colonne, il confronto può richiedere fino a un'ora, o eventualmente scadere, ma questo ha funzionato in passato e mi ha permesso di scaricare le voci e esegui il debug con successo. Se faccio il confronto su tutte le colonne della tabella, ma la colonna dei dati binari, il confronto è quasi istantaneo, ma quella colonna non viene quindi trasferita al database di produzione.

La mia domanda è: c'è un modo per eseguire un confronto di dati tra due tabelle, escludendo una particolare colonna per il confronto stesso (altri campi forniscono informazioni sufficienti per differenziarlo senza di esso) ma includendolo quando si aggiorna il database di destinazione?

risposta

-1

È possibile utilizzare una funzione di hash sui grandi campi varbinary e confrontarli. HASHBYTES con MD5 è un buon metodo per il confronto in quanto è astronomicamente improbabile che generi lo stesso valore di hash per due diversi input. Il problema è, HASHBYTES funziona solo su campi fino a 8000 byte. Ci sono alcune soluzioni per risolvere il problema creando una funzione. Alcuni postato qui:

SQL Server 2008 and HashBytes

si avrebbe la possibilità di memorizzare i valori di hash nella tabella al momento della inserimento o aggiornamento utilizzando un campi calcolati persisteva. O potresti semplicemente generare i valori hash mentre fai la tua query di confronto.

Problemi correlati