2012-11-20 2 views
1

쿼리를 통해 지정된 날짜 - 시간 이후에 업데이트되거나 생성되지 않은 모든 레코드를 테이블에서 삭제하는 방법 ? SQL Server 2008과 Oracle 모두에 적용됩니다.쿼리에서 날짜 - 시간 X 이후로 업데이트 또는 생성되지 않은 테이블에서 모든 레코드를 삭제하는 방법

+4

테이블에 마지막 업데이트 날짜/시간을 저장하는 열이 있습니까? – Grambot

+6

행을 만들거나 업데이트 한시기를 나타내는 열이 있습니까? 데이터베이스는 어떻게 든 그것을하지 않으면 마술처럼 추적하지 않습니다 (기본값, 트리거, 감사 등이있는 열). –

+0

@TheCapn & AaronBertrand : 아니요, 그런 열은 없습니다 ... 나는 마법을 기대하고있었습니다. –

답변

3

의견에 지적 된 바와 같이 마법 해결책이 없다는 데 동의하지만. 잠재적으로 필요한 것을 성취 할 수있는 방법이있을 수 있습니다. 날짜와 시간을 염두에두고 데이터베이스를 백업 한 경우 별도의 데이터베이스에 백업을 복원 한 다음 몇 가지 비교를 수행 할 수 있습니다.

SSIS를 사용하여 일부 작업을 스크립팅하여 데이터를 비교하고 기준에 따라 삭제할 수 있습니다. RedGate 및 Idera와 같은 다양한 타사 도구가있어 두 개의 별도 데이터베이스간에 데이터를 비교합니다.

Merge 문은 일치하는 데이터와 일치하지 않는 데이터에 대한 옵션을 제공하며 정확한 행 버전이 발견되면 조인에서 명령 (예 : 삭제)을 제공하는 데 사용할 수 있습니다.

나는 당신이 필요로하는 것을 달성하기위한 간단한 쿼리를 원하지만 상자 밖에서 조금 생각하면 도움이 필요할 수도 있습니다.

그러나이 모든 경우에는 해당 날짜/시간의 백업본이 있어야합니다.

+0

좋은 아이디어. 이 작업은 Oracle과 SQL Server 모두에서 수행 할 수 있지만 작업의 상당 부분을 차지합니다. – RBarryYoung

+0

+1 그건 좋은 대안이지만, 필요한 것에는 적합하지 않습니다. 감사. –

관련 문제