3

SQL Serverデータベースに接続されたEntity Frameworkを使用しているWebアプリケーションがあるという問題があります。ランダムな間隔で、私のテーブルの1つのデータがクリアされ続けます。データの約90%が削除されます。SQL Serverデータベースからデータが消えています

私たちはウェブアプリケーションを精査していますが、そのテーブルの1つだけを除いて、すべての削除ステートメントを見つけることはできません。

SQL Server Profilerを実行していましたが、削除ステートメントは選択されていません。しかし、私はまた、このテーブルにON DELETEトリガーを持っていて、削除されたデータをバックアップテーブルにコピーしています。これが実行され、トリガーがうまくいき、deleteステートメントが実際に実行されたかどうかの競合があるようです。また、サーバー上には数百GBのスペースがあり、スペースの不足は問題ではありません。

私たちは無駄に調査することができました。私たちは今考えていません。

誰かが何らかの理由でこれが起こる可能性がある場合、私はどんな助けでも非常に感謝しています。

ありがとうございます。

+0

私は、あなたがon deleteトリガーについて話し合ったときに、矛盾が何を意味するのか理解していません。そのトリガを無効にした人以外の人が削除されたレコードをすべて削除したはずです。 – GuidoG

+2

カスケード削除による外部キーはどこかにありますか?どのデータベースからもカスケード削除を禁止する必要があります。 – GuidoG

+0

適切な答えではなく思考です。それは合併可能でしょうか?私は間違って書かれた合併を横切って走ってきました。私は、プロファイラで別々にトレースする必要があるかどうかはわかりませんが、一見価値があるかもしれません。 –

答えて

1

カスケード削除がオンになっているかどうかを確認する必要があります。このクエリは、そのお手伝いをすることができます

SELECT name, 
     delete_referential_action_desc 
FROM sys.foreign_keys 

私は、エンティティフレームワークは、独自のカスケード削除することができた場合知らない私はそれを使用いけません。ですから、カスケード削除のエンティティフレームワークをチェックする方法はわかりません。

+0

このクエリはすべての外部キーに対してNO_ACTIONを返します。したがって、私はそこにはないと仮定しますカスケード削除? EF側はすでにチェックしており、すべてオフになっています。便利なクエリの場合+1 +1 – DaRoGa

+0

はい、カスケード削除は問題の原因ではありません。私はあなたの問題を今どこを探していいのか分からない – GuidoG