데이터베이스가 복원되기 전에 작업중인 시스템을 종료해야합니다. 고객이이를 수행하지 않으면 응용 프로그램 서버의 메모리 내 상태가 데이터베이스와 일치하지 않기 때문에 심각한 문제가 발생할 수 있습니다. 손상된 데이터베이스로 인해 오류가 발생하고 시스템이 작동을 멈추고 데이터베이스를 사용할 수 없게 될 때까지 약간의 시간이 걸릴 수 있습니다.SQL Server : 응용 프로그램이 실행되는 동안 데이터베이스 복원을 방지하거나 검색하는 방법
그래서이 상황을 감지하고 문제를 피하려고합니다.
- 응용 프로그램 서버는 반드시이 대부분의 아마 실 거예요 도움이 같은 연결 살아, 그래서 단일 사용자 모드 및 물건을 보관하지 않습니다.
- 복원에 실패했거나 서버가 종료 되었더라도 상관 없습니다. 그냥 무시해서는 안됩니다..
- 모든 컴퓨터의 SQL Server 도구로 데이터베이스를 복원 할 수 있습니다. 나는 내 도구에 의지 할 수 없다.
누구나 이미 이러한 문제를 해결 했습니까?
SQL Server 2005 이상, .NET (C#), SMO를 사용하고 있습니다.
는편집 : 때문에 몇 가지 오해와 응용 프로그램 디자인에 대한 논의의는
, 나는 문제가 어디에서 오는지 설명 할 필요가있다.
하이 로우 발생기 : 어플리케이션이 하이 로우 번호 생성기의 하이 값을 가진다 NHibernate에 캐시를 사용한다. Hi-Values는 데이터베이스에서 읽어 와서 응용 프로그램이 데이터베이스로 돌아가서 다른 숫자 범위를 가져올 때까지 특정 수의 기본 키를 생성 할 수 있습니다. 데이터베이스에 저장된 Hi-Value는 증분되지만 결코 감소하지 않습니다 (이전 버전의 데이터베이스가 복원되지 않는 한). 이것은 Hi-Lo 제너레이터의 개념입니다. 도 아니고 스스로 구현하지도 않았고도 구현하지 않았습니다.
캐시 : 캐시에서 기본 키는 데이터베이스의 레코드를 식별하는 데 사용됩니다. 데이터베이스의 정상적인 사용에서는 기본 키가 절대로 변경되지 않습니다. 복원의 경우, 기본 키가 더 이상 동일한 레코드를 식별하지 못하고 캐시가 단순한 잘못입니다. 도이를 감지 할 수 없습니다.. 예를 들어 새로운 레코드에 잘못된 외래 키를 설정하는 결과를 초래할 수 있습니다.
DB 복원은과 데이터베이스의 다른 일반적인 사용과 비교할 수 없습니다. 복원은 모든 데이터 처리 규칙을 어기 게됩니다.
나는 많은 응용 프로그램이 실행 중일 때 연결을 열어 두어 복원이 불가능하다고 생각합니다. 대부분의 다른 응용 프로그램은 데이터베이스가 복원되고 나중에 데이터베이스에 액세스하려고 할 때 충돌이 발생할 수 있습니다. 제 경우에는 한동안 계속 달릴 수도 있습니다. 이것은 문제입니다.
대부분의 사람들은 응용 프로그램이 실행 중일 때 데이터베이스를 복원하려고 시도하지 않는다고 생각합니다.
이론적으로는 응용 프로그램이 여전히 메모리에있는 동안 데이터베이스가 복원 될 때 무언가가 완전히 잘못 될 위험이 있다고 생각됩니다. 나는 이것이 전혀 문제가되지 않는다는 말을 듣고 싶지 않다. 단지 대부분의 응용 프로그램이 그것을 처리하지 못하기 때문이다.
자격을 얻을 수 있습니까? 메모리 상태가 의미하는 바가 있습니다. SQL Server 버퍼 캐시, 캐싱 계층에 대해 이야기하고 있습니까? 정확히 무엇입니까? –
응용 프로그램 메모리 일뿐입니다. 캐시, 수업 시간 등은별로 중요하지 않습니다. 하나의 큰 문제는 숫자의 범위를 예약 NHibernates hilo - 생성기에 의해 발생합니다. 이 번호는 다른 데이터베이스에서 유효하지 않습니다. –
나는 당신이 당신의 상황과 질문을 더 분명하고 명확하게 설명 할 필요가 있다고 생각한다. 지금까지의 설명을 통해 나 자신과 다른 사람들의 반응은 완벽하게 유효합니다. 특히, 이러한 인 메모리 캐시가 현재 복원 작업보다 더 평범한 소스에서 데이터베이스의 데이터 변경으로부터 어떻게 보호 받고 있는지 알고 싶습니다. 운영자, 에이전트 작업, ETL proc 등이 캐시와 모든 데이터 관계를 무효화하는 중요한 테이블을 업데이트하지 않았다는 것을 어떻게 알 수 있습니까? 우리가 알고 있다면 복원과 같은 더 희귀 한 경우로 확장 할 수 있습니다. – RBarryYoung