データベースでGUIDを見つける
-
05-07-2019 - |
質問
現在、いくつかの(重大な)データ破損が発生しているプロジェクトに取り組んでいます。具体的には、データベースはほとんどのテーブルの主キーとしてGUIDを使用していますが、それらのテーブル間でデータの整合性を強制していません(「これは別の会社から購入され、スタッフと統合された」という議論のため)。参照整合性を導入する取り組みが進行中ですが、それが可能になる前にデータをクリーンアップする必要があります。
このデータ破損の一部は、異なるエンティティキーが切り替えられたか、誤った列に挿入されたことです。たとえば、有効な" ProductId"値は" CustomerId"に存在します間違った列に間違ったキーを挿入するソフトウェアによるフィールド。これは、問題が最終的に(データ集約ジョブ中に)検出される前にデータベースで数か月間発生していたため、クリーンアップの努力はかなり大きくなりました。
私が思っているのは、データベースでGUIDを見つける方法があるかどうかです。むしろ、あるテーブルのプライマリキーと思われるGUIDがある場合、T-SQLで既知のuniqueidentifierキー列との一致を要求する方法はありますか?
私が持っているGUIDはCustomerIdではありませんが、他のテーブルの別のプライマリキーIDである可能性があります。これまで、チームは不正なGUIDと一致する他のテーブルを手動で検索し、「タイプ」を見つけられるかどうかを確認していました。キーの。彼らは、多くの" select * from [table] where [tableId] = @ rogueGUID"を使用してスクリプトを作成することさえ行っています。既知のエンティティテーブルで一致を検索するステートメント。ただし、このアプローチはあまり効率的ではありません。
このプロジェクトだけでなく、「このGUIDはこのデータベースのどこにでもプライマリキー値として存在しますか?」クエリのタイプは、開発ツールボックスの有用な資産になります。助けていただければ幸いです。
解決
これと同様の質問が行われ、こちら。これが役立つことを願っています。