3

SQL Server 데이터베이스에 연결된 Entity Framework를 사용하는 웹 응용 프로그램에 문제가 있습니다. 임의의 간격으로 테이블 중 하나의 데이터가 계속 정리됩니다. 약 90 %의 데이터가 삭제됩니다.SQL Server 데이터베이스에서 데이터가 사라짐

우리는 웹 응용 프로그램을 샅샅이 뒤졌으며 그 테이블에서 아무 것도 삭제 명령문을 찾을 수 없습니다.

SQL Server 프로파일 러가 실행 중이지만 삭제 명령문을 선택하지 않았습니다. 그러나, 나는 또한이 테이블에 ON DELETE 트리거를 사용하여 삭제 된 데이터를 백업 테이블에 복사하고이 실행 및 트리거를 통해 삭제 명령문이 실제로 실행되었는지 여부에 대한 충돌이있는 것으로 보입니다. 서버에는 수백 GB의 공간이 있으므로 공간 부족으로 문제가 발생하지 않습니다.

우리는 최대한 많은 조사를 해본 결과 현재 아이디어가 부족합니다.

누군가가 어떤 이유로이 일이 일어날 수 있다면 나는 어떤 도움에 대해 매우 감사 할 것입니다.

미리 감사드립니다.

+0

삭제 트리거에 관해 이야기 할 때 충돌로 인한 의미를 이해하지 못합니다. 해당 삭제 트리거는 삭제 된 모든 레코드를 선택해야합니다. – GuidoG

+2

캐스케이드 삭제 어딘가에 외래 키가 있습니까? 캐스케이드 삭제는 모든 데이터베이스에서 금지되어야합니다. – GuidoG

+0

적절한 대답이 아닌 생각 : 그것이 합병 될 수 있습니까? 이전에 실수로 삭제 한 잘못 작성한 병합을 실행했습니다. 프로파일 러에서 다르게 추적해야하는지 여부는 확실하지 않지만 한 번해볼 가치가 있습니다. –

답변

1

캐스케이드 삭제가 설정되어 있는지 확인해야합니다. 이 쿼리는 그와 함께 당신을 도울 수 있습니다

SELECT name, 
     delete_referential_action_desc 
FROM sys.foreign_keys 

나는, 엔티티 프레임 워크는 자신의 캐스케이드 삭제할 수 있는지 알고 그나마 나는 그것을 사용하지 말아. 그래서 엔티티 프레임 워크에서 캐스케이드 삭제를 확인하는 방법을 모른다.

+0

이 쿼리는 모든 외래 키에 대해 NO_ACTION을 반환하므로 아무 것도 없다고 가정합니다. 계단식 삭제? 그리고 EF 쪽은 이미 확인했고 모두 꺼져 있습니다. +1 유용한 검색어에 대해 – DaRoGa

+0

예, 계단식 삭제가 문제의 원인이 아님을 의미합니다. 나는 지금 당신의 문제를 어디에서 찾을 지 다른 생각이 없다. 미안하다. – GuidoG