통합 테스트를 위해 SQL Server의 테스트 데이터베이스를 사용하는 방법을 정의하려고합니다.
내 생각은 통합 테스트 어셈블리를 시작할 때 다음 단계를 수행하는 것이 었습니다.
- 완전히 빈 데이터베이스를 만듭니다
- "데이터베이스 오브젝트 작성"스크립트를 실행하여 모든 관련 데이터베이스 오브젝트 (테이블, 뷰, 시퀀스 등)를 작성하십시오.
- "기본 데이터"(조회 값 등)를 채 웁니다.
(db)_Basis
향후 통합 테스트를 위해 "베이스 라인" 이라고하는 데이터베이스 스냅 샷 작성
이제 모든 테스트 클래스 (1-n 테스트 포함) 이전에 데이터베이스의 잘 정의 된 "빈"상태로 돌아 가기 위해 "스냅 샷에서 복원"을 간단히 수행하려고했습니다. 지금까지 매력처럼 작동합니다.
그러나 대규모 테스트 데이터베이스에서 작동 해야하는 통합 테스트 세트가 있으므로 각 테스트 픽스처 (n 개의 개별 테스트가있는 클래스) 전에이 작업을 수행하기를 희망했습니다
(db)_Basis
스냅 샷 에서 데이터베이스를 복원- 50,000 개가 넘는 데이터 행을 데이터베이스에 삽입
- 다른 스냅
(db)_With_Testdata
샷 스냅 샷 생성
그런 다음 각 테스트에 대해 데이터베이스를 정의 된 (db)_With_Testdata
스냅 샷 버전으로 재설정 하고 테스트를 실행하고 결과 등을 확인하십시오.
문제는 : 동시에 두 개의 DB 스냅 샷 을 가질 수없는 것 같습니다. 일단 그렇게하면 데이터베이스를 이들 중 하나에 복원 할 수 없습니다 ....이 오류가 계속 발생합니다.
메시지 3137, 수준 16, 상태 4, 줄 9
데이터베이스를 되돌릴 수 없습니다. 기본 또는 스냅 샷 이름이 잘못 지정되었거나 다른 모든 스냅 샷이 삭제되지 않았거나 파일이 누락되었습니다.메시지 3013, 수준 16, 상태 1, 줄 9
RESTORE DATABASE가 비정상적으로 종료됩니다.
이것이 실제로 SQL Server 데이터베이스 스냅 샷의 작동 방식입니까? 끔찍하게 제한하는 것 같습니다 ..... 원래 "(db) _Basis"스냅 샷으로 직접 되돌릴 수없는 경우 이해할 수 있습니다. 그러나 이제 두 개의 스냅 샷이 있기 때문에 가장 최근의 스냅 샷으로 돌아갈 수도 없습니다. ?!?!?