¿Hay alguna forma en SQL Server 2012 para generar un hash de un conjunto de filas y columnas?Generar un hash para un conjunto de filas en el servidor sql
Quiero generar un hash, almacenarlo en el registro principal. Cuando llegue una actualización, compararé el hash entrante con el hash de registro principal y sabré si los datos han cambiado.
Así que algo como esto sería bueno:
SELECT GENERATEHASH(CONCATENATE(Name, Description, AnotherColumn))
FROM MyChildTable WHERE ParentId = 2 -- subset of data belong to parent record 2
"concatenar" sería una función agregada lo que no sólo concat las columnas, sino también, dentro de las filas del conjunto de resultados. Como MAX, pero devolviendo todo como una concatenación de cadenas.
Espero que esto te ayude a ver lo que quiero decir de todos modos!
El problema fundamental que trato de resolver es que el sistema de mi cliente realiza importaciones de grandes cantidades de datos jerárquicos. Si puedo evitar el procesamiento mediante el uso de hashes, entonces creo que esto ahorrará mucho tiempo. Por el momento, el SP se está ejecutando un 300% más lento cuando tiene que procesar datos duplicados.
Muchas gracias
Desafortunadamente CHECKSUM tiene debilidades conocidas (es decir, colisiones prácticas). P.ej. tipo decimal http://sqlserverpains.blogspot.com.au/2008/06/checksum-pains.html así que ten cuidado. – Shiv