0

추적을 사용하여 시스템을 통해 실행되는 모든 삭제 또는 업데이트 쿼리를 기록합니다. 문제는 내가 DELETE FROM [dbo].[Artist] WHERE ArtistId>280과 같은 쿼리를 실행하면 얼마나 많은 행이 삭제되었는지 알지만 삭제 된 행 (데이터)을 찾을 수 없습니다.SQL 프로파일 러 또는 추적에서 영향을받는 행을 찾는 방법은 무엇입니까?

로깅 시스템으로 생각하고 있으므로 어떤 행이 영향을 받았는지, 가능하다면 어떤 데이터가 있었는지 확인하는 것이 유용 할 것입니다. 나는이 일을 위해 방아쇠를 사용하고 싶지 않지만, 만약해야한다면 가능할 것이다.

+1

SQL 프로파일 러는 데이터베이스에서 수행 된 작업 만 표시 할 것이므로 삭제 된 레코드에서 값을 보여줄 수 있다고 생각합니다. 삭제를 위해 트리거를 사용해야한다고 생각합니다. – 3N1GM4

답변

4

원본 데이터가 필요하고 삭제 된 모든 데이터를 별도의 테이블에 저장하려는 경우 실제 데이터를 실제로 삭제하지 말고 논리적으로 삭제해야하는 이유는 무엇입니까? 즉

UPDATE dbo.Artist SET Artist_deleted = 1 WHERE ArtistId>280 

그런 다음이를 지원하는 새 테이블 및 스크립트를 만드는 대신 현재 테이블에 하나의 열을 추가하면됩니다. 디스크 공간/성능 등에 대해 걱정할 경우 삭제 된 플래그를 기준으로 현재 테이블을 분할 할 수 있습니다.

+0

'DateDeleted'값을 동시에 설정할 필요가 있습니다. 실제로 감사로 삭제할 때 저장할 수있는 다양한 값이 있습니다. – 3N1GM4

+0

그래, 그 길로가는 것 같다. 또한 @ 3N1GM4가 말한대로 DateDeleted를 추가해야 할 것입니다. 그러나 그것의 기본 논리입니다. (데이터베이스는 제 것이 아니지만 같은 것을 구현하는 것에 대해 이야기하고 있습니다. 따라서 좋은 것이 전부입니다.) –