2009-09-10 4 views
0

Je travaille actuellement sur un projet où une corruption de données (importante) s'est produite. Plus précisément, la base de données utilise des GUID comme clés primaires sur la plupart des tables, mais elle n'impose pas l'intégrité des données entre ces tables (en raison d'une discussion longue "ceci a été acheté d'une autre société et intégrée à nos affaires"). Il y a un effort en cours pour introduire l'intégrité référentielle, mais les données doivent être nettoyées avant que cela soit possible.Trouver GUID dans la base de données

Une partie de cette corruption de données est que différentes clés d'entité ont été commutées ou insérées dans des colonnes incorrectes. Par exemple, une valeur "ProductId" valide existe dans un champ "CustomerId" car le logiciel insère la mauvaise clé dans la mauvaise colonne. Cela se passait pendant des mois dans la base de données avant que le problème ne soit finalement détecté (lors d'un travail d'agrégation de données) et maintenant l'effort de nettoyage est plutôt important.

Ce que je me demande est s'il y a un moyen de trouver un GUID dans une base de données. Au contraire, si j'ai un GUID que je pense être une clé primaire dans une table, y a-t-il un moyen en T-SQL de demander des correspondances avec n'importe quelle colonne clé uniqueidentifier connue?

Je sais que le GUID dont je dispose n'est pas un CustomerId, mais il peut s'agir d'un autre ID de clé primaire provenant d'une autre table. Jusqu'à présent, l'équipe recherchait manuellement dans les autres tables les correspondances avec les GUID non autorisés pour voir s'ils pouvaient trouver le "type" de la clé. Ils sont même allés jusqu'à créer des scripts avec beaucoup d'instructions "select * from [table] où [tableId] = @rogueGUID" qui recherchent une correspondance dans les tables d'entités connues. Cependant, cette approche n'est pas très efficace.

Je cherche ce script non seulement pour ce projet mais aussi parce que je pense que "ce GUID existe-t-il en tant que valeur de clé primaire n'importe où dans cette base de données?" type de requête serait un atout utile dans une boîte à outils de développement. Toute aide est appréciée.

+0

Sérieusement, mes condoléances ... –

+0

Merci. Ce sera une longue route à parcourir, mais ce sera très bénéfique pour cette équipe quand nous atteindrons la fin. –

+0

duplication possible de [SQL Server: recherche dans toutes les tables pour un GUID particulier] (http://stackoverflow.com/questions/970477/sql-server-search-all-tables-for-a-particular-guid) – Aaroninus

Répondre

1

Une question similaire à ceci a été posée et a répondu here. J'espère que cela aidera.

+1

Pete, Merci. J'ai cherché une question similaire mais je n'ai pas réussi à la trouver (malgré le fait que celui que vous avez lié semblait facile à trouver). J'apprécie la réponse rapide. Cela aide beaucoup! –

+0

De rien Stuart. Je suis heureux de pouvoir aider. –

Questions connexes