Pregunta

Actualmente estoy trabajando en un proyecto en el que se han producido algunos daños (significativos) en los datos. Específicamente, la base de datos utiliza GUID como claves primarias en la mayoría de las tablas, sin embargo, no está aplicando la integridad de los datos entre esas tablas (debido a un largo proceso que se compró en otra compañía y se integró con nuestra discusión de cosas). Hay un esfuerzo en curso para introducir la integridad referencial, sin embargo, los datos deben ser limpiados antes de que sea posible.

Parte de esta corrupción de datos es que diferentes claves de entidad se han cambiado o insertado en columnas incorrectas. Por ejemplo, un " ProductId " válido el valor existe en un " CustomerId " campo debido a que el software inserta la clave incorrecta en la columna incorrecta. Esto sucedió durante meses en la base de datos antes de que finalmente se detectara el problema (durante un trabajo de agregación de datos) y ahora el esfuerzo de limpieza es bastante grande.

Lo que me pregunto es si hay una forma de encontrar un GUID en una base de datos. Más bien, si tengo un GUID que creo que es una clave principal en alguna tabla, ¿hay alguna forma en T-SQL de solicitar coincidencias con cualquier columna de clave de identificador único conocida?

Sé que el GUID que tengo no es un CustomerId, pero podría ser otra ID de clave principal de otra tabla. Hasta ahora, el equipo ha estado buscando manualmente en las otras tablas las coincidencias con los GUID deshonestos para ver si pueden encontrar el " tipo " de la llave. Incluso han ido tan lejos como para crear guiones con un montón de " seleccionar * de [tabla] donde [tableId] = @ rogueGUID " Sentencias que buscan en las tablas de entidades conocidas una coincidencia. Sin embargo, este enfoque no es muy eficiente.

Estoy buscando esta secuencia de comandos no solo para este proyecto sino también porque creo que existe un " ¿Este GUID existe como un valor de clave principal en esta base de datos? " El tipo de consulta sería un activo útil en una caja de herramientas de desarrollo. Cualquier ayuda es apreciada.

¿Fue útil?

Solución

Se hizo una pregunta similar a esta y se respondió aquí . Esperemos que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top