質問

現在、いくつかの(重大な)データ破損が発生しているプロジェクトに取り組んでいます。具体的には、データベースはほとんどのテーブルの主キーとしてGUIDを使用していますが、それらのテーブル間でデータの整合性を強制していません(「これは別の会社から購入され、スタッフと統合された」という議論のため)。参照整合性を導入する取り組みが進行中ですが、それが可能になる前にデータをクリーンアップする必要があります。

このデータ破損の一部は、異なるエンティティキーが切り替えられたか、誤った列に挿入されたことです。たとえば、有効な" ProductId"値は" CustomerId"に存在します間違った列に間違ったキーを挿入するソフトウェアによるフィールド。これは、問題が最終的に(データ集約ジョブ中に)検出される前にデータベースで数か月間発生していたため、クリーンアップの努力はかなり大きくなりました。

私が思っているのは、データベースでGUIDを見つける方法があるかどうかです。むしろ、あるテーブルのプライマリキーと思われるGUIDがある場合、T-SQLで既知のuniqueidentifierキー列との一致を要求する方法はありますか?

私が持っているGUIDはCustomerIdではありませんが、他のテーブルの別のプライマリキーIDである可能性があります。これまで、チームは不正なGUIDと一致する他のテーブルを手動で検索し、「タイプ」を見つけられるかどうかを確認していました。キーの。彼らは、多くの" select * from [table] where [tableId] = @ rogueGUID"を使用してスクリプトを作成することさえ行っています。既知のエンティティテーブルで一致を検索するステートメント。ただし、このアプローチはあまり効率的ではありません。

このプロジェクトだけでなく、「このGUIDはこのデータベースのどこにでもプライマリキー値として存在しますか?」クエリのタイプは、開発ツールボックスの有用な資産になります。助けていただければ幸いです。

役に立ちましたか?

解決

これと同様の質問が行われ、こちら。これが役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top