2013-11-25 3 views
0

서버에 백업 및 분석이라는 두 개의 SQL Server 데이터베이스가 있다고 가정합니다. 백업은 대기 모드이고 주기적으로 로그가 적용됩니다. 백업의 테이블에 액세스하는 장기 실행 저장 프로 시저가 Analysis에 있습니다. 저장 프로 시저가 실행되는 동안 백업이 복원으로 이동하면 저장된 프로 시저가 실패합니다. (저장된 프로 시저가 시작될 때 백업이 이미 복원에있는 경우에는 신경 쓰지 않습니다.)저장 프로 시저에서 다른 데이터베이스 복원 방지

저장 프로 시저를 예약하고 복원하지 않도록 복원하는 등 여러 가지 방법으로이 문제를 해결할 수 있습니다 동일한 시간대에 발생하거나 저장 프로 시저를 더 작은 저장 프로 시저로 분리합니다. 그러나, 내가하고 싶은 것은 백업 프로세스가 저장 프로 시저의 지속 기간 동안 복원 (아마도 독점적 인 액세스를 얻지 못하도록 복원 프로세스를 막음으로써)으로 들어가는 것을 막는 것이다. Backup.sys.sp_getapplock을 호출하여 저장 프로 시저 중에 응용 프로그램 잠금을 유지하려고했지만 시도가 발생하지 않도록 복원하지 않았습니다.

내가 할 수있는 방법이 있습니까? 감사!

+0

로그 전달 구성의 일부로 백업 데이터베이스가 읽기 전용 모드에 있다는 것을 의미합니까? – Sam

답변

0

백업에서 로그 전달을 사용하는 경우 데이터베이스에 대한 사용자 연결이 없을 때만 t- 로그를 적용하도록 설정합니다. http://technet.microsoft.com/en-us/library/ms189572(v=sql.105).aspx

사용자의 연결을 끊지 않도록 선택할 수 있습니다. 이 경우 복원 작업 은 해당 데이터베이스에 연결된 사용자가 인 경우 트랜잭션 로그 백업을 보조 데이터베이스로 복원 할 수 없습니다. 트랜잭션 로그 백업 은 데이터베이스에 대한 사용자 연결이 없을 때까지 누적됩니다.

+0

이 솔루션이 제대로 작동하는지 확신 할 수 없습니다. 해당 프로세스는 백업 데이터베이스가 아닌 Analysis 데이터베이스에서 실행됩니다. 따라서 복원 작업이 시작될 때 반드시 백업에 연결될 필요는 없습니다. – chris4600