가용성을 위해 유지 관리하는 미러 데이터베이스를 활용하여 보고를 오프로드할 수 있습니다. 보고에 미러 데이터베이스를 사용하려면 미러 데이터베이스에 데이터베이스 스냅샷을 만들고 클라이언트 연결 요청을 최신 스냅샷으로 보낼 수 있습니다. 데이터베이스 스냅샷은 스냅샷을 만드는 시점에 존재했던 원본 데이터베이스의 정적 읽기 전용 트랜잭션 일치 스냅샷입니다. 미러 데이터베이스에 데이터베이스 스냅샷을 만들려면 데이터베이스가 동기화된 미러링 상태여야 합니다.
미러 데이터베이스 자체와 달리 클라이언트에서 데이터베이스 스냅샷에 액세스할 수 있습니다. 미러 서버가 주 서버와 통신하는 한 보고 클라이언트가 스냅샷에 연결하도록 지시할 수 있습니다. 데이터베이스 스냅샷은 정적이므로 새 데이터를 사용할 수 없습니다. 사용자가 비교적 최근 데이터를 사용할 수 있도록 하려면 정기적으로 새 데이터베이스 스냅샷을 만들고 애플리케이션이 들어오는 클라이언트 연결을 최신 스냅샷으로 직접 연결하도록 해야 합니다.
새 데이터베이스 스냅샷은 거의 비어 있지만 점점 더 많은 데이터베이스 페이지가 처음으로 업데이트됨에 따라 시간이 지남에 따라 증가합니다. 데이터베이스의 모든 스냅샷은 이러한 방식으로 증분 방식으로 증가하므로 각 데이터베이스 스냅샷은 일반 데이터베이스만큼 많은 리소스를 사용합니다. 미러 서버 및 주 서버의 구성에 따라 미러 데이터베이스에 과도한 수의 데이터베이스 스냅샷이 있으면 주 데이터베이스의 성능이 저하될 수 있습니다. 따라서 미러 데이터베이스에 비교적 최근 스냅샷을 몇 가지만 유지하는 것이 좋습니다. 일반적으로 대체 스냅샷을 만든 후에는 들어오는 쿼리를 새 스냅샷으로 리디렉션하고 현재 쿼리가 완료된 후 이전 스냅샷을 삭제해야 합니다.
비고
데이터베이스 스냅숏에 대한 자세한 내용은 데이터베이스 스냅숏(SQL Server)을 참조하세요.
역할 전환이 발생하면 데이터베이스와 해당 스냅샷이 다시 시작되어 일시적으로 사용자의 연결이 끊어집니다. 그 후 데이터베이스 스냅샷은 생성된 서버 인스턴스에 남아 있으며, 이 인스턴스는 새 주 데이터베이스가 되었습니다. 사용자는 장애 조치(failover) 후 스냅샷을 계속 사용할 수 있습니다. 그러나 이렇게 하면 새 주 서버에 추가 부하가 발생합니다. 사용자 환경에서 성능이 중요한 경우 새 미러 데이터베이스를 사용할 수 있게 되면 스냅샷을 만들고, 클라이언트를 새 스냅샷으로 리디렉션하고, 이전 미러 데이터베이스에서 모든 데이터베이스 스냅샷을 삭제하는 것이 좋습니다.
비고
규모가 잘 확장되는 전용 보고 솔루션의 경우 복제를 고려합니다. 자세한 내용은 SQL Server 복제를 참조하세요.
예시
이 예제에서는 미러된 데이터베이스에 스냅샷을 만듭니다.
데이터베이스 미러링 세션의 데이터베이스가 AdventureWorks2012라고 가정합니다. 이 예제에서는 F 드라이브에 있는 AdventureWorks 데이터베이스의 미러 복사본에 세 개의 데이터베이스 스냅샷을 만듭니다. 스냅샷의 이름을 지정AdventureWorks_0600AdventureWorks_1200하고 AdventureWorks_1800 대략적인 생성 시간을 식별합니다.
AdventureWorks2012의 미러에 첫 번째 데이터베이스 스냅샷을 만듭니다.
CREATE DATABASE AdventureWorks_0600 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP') AS SNAPSHOT OF AdventureWorks2012AdventureWorks2012의 미러에서 두 번째 데이터베이스 스냅샷을 만듭니다. 계속 사용
AdventureWorks_0600중인 사용자는 계속 사용할 수 있습니다.CREATE DATABASE AdventureWorks_1200 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP') AS SNAPSHOT OF AdventureWorks2012이 시점에서 새 클라이언트 연결을 프로그래밍 방식으로 최신 스냅샷으로 보낼 수 있습니다.
미러 AdventureWorks2012에서 세 번째 스냅샷을 만듭니다. 아직
AdventureWorks_0600또는AdventureWorks_1200을 사용 중인 사용자는 계속 사용할 수 있습니다.CREATE DATABASE AdventureWorks_1800 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP') AS SNAPSHOT OF AdventureWorks2012이 시점에서 새 클라이언트 연결을 프로그래밍 방식으로 최신 스냅샷으로 보낼 수 있습니다.