생성 테이블 또는 Alter 테이블 작업이 수행 될 때 SQL Server가 어떤 종류의 감사 정보를 저장합니까?

StackOverflow https://stackoverflow.com/questions/984558

  •  13-09-2019
  •  | 
  •  

문제

이 질문에 대한 영감은 스키마가 완전히 변경된 테이블에 데이터를 삽입 한 다른 저장된 Proc라고 불렀기 때문에 저장된 Proc가 나에게 파산 한 것입니다.

문제는 SQL Server 데이터베이스에 테이블이 있고 그것이 어떻게 도착했는지 모른다는 것입니다. 사용자 정의 감사 정보를위한 DDL 트리거가 없으며 테이블 DDL의 소스 제어 저장소에는 레코드가 없습니다. SQL Server 만 사용하여 테이블에 대해 얻을 수있는 법의학 데이터를 얻을 수 있습니다.

나 자신과 비슷한 상황 에서이 질문을 우연히 발견 한 사람은 버전 제어 및 DDL 트리거에 관한 제안으로 도움을받지 않을 것입니다. 기업 정치가 해당 솔루션을 구현할 수 있다면이 블로그에 대한 많은 정보가 있습니다. 저와 내 상황에있는 사람들은 실제로 필요한 사람들이 SQL Server에서 가능한 한 많은 데이터 조각을 수집하여 우리가 생각해 낼 수있는 다른 데이터와 결합 할 수 있어야합니다.

도움이 되었습니까?

해결책

불행히도, 당신은 다음을 제외하고 일어난 일을 재구성 할 방법이 없습니다.

  • DBA가 흔적과 역사가있는 경우. SQL Server 2005에는 기본 추적이 있으며 "BlackBox"추적이 있지만 충돌 직전에 발생한 일을 찾는 데 사용됩니다.

  • 전체 복구 모델이 있으면 로그 뷰어 도구를 사용해 볼 수 있습니다 (무료 레드 게이트 1)

  • 활동 및 보안 모델에 따라 Windows 보안 로그를 확인하여 누가 DDL 권한으로 로그인 한 사람을 확인할 수도 있습니다.

  • SQL 이벤트 로그에는 정보가있을 수 있습니다. 예를 들어, "허가"오류를 기록하는 추적 플래그를 활성화 한 경우 시작시기를 확인할 수 있습니다. 또는 변경을 한 사람은 기록 된 다른 예외를 생성했을 수 있습니다.

  • 당신은 권리가있는 사람들에게 물어볼 수 있습니다. 그것은 진정한 실수 일 수 있습니다 (예 : 그들이 Dev에 있다고 생각했습니다)

다른 팁

다음 쿼리는 제작 및 마지막 수정 시간을 얻었습니다.

SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')

당신은 테이블의 생성을 찾을 수 있어야합니다. 트랜잭션 로그. 나는 여기에 뷰어 도구를 사용한 적이 없으며,이를 위해 시간을 다시 검색하는 방법을 알려주지 못했지만 모든 것이 트랜잭션에서 발생하므로 시스템 테이블조차도 로그인해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top