이것은 내가 묻는 earlier question의 설명입니다. 그것은 그 질문과는 완전히 달랐다. 나는 그것이 그 자체로 설 수 있다고 생각했다.데이터베이스의 데이터를 읽기 전용으로 설정하고 스키마를 변경할 수 있음
프로덕션 데이터베이스의 스냅 샷을 반기마다 만듭니다. 사용자는 프런트 엔드 GUI에서 백 엔드 데이터베이스를 전환하여 기록 데이터를 볼 수 있습니다. 히스토리 데이터이므로 읽기 전용으로 남아 있어야합니다.
그러나 현재 필드의 새 필드가 현재 데이터베이스에 추가되는 경우가 있습니다. 프런트 엔드에서 이러한 필드가 필요하면 문제가 발생할 수 있습니다. 우리의 해결책은 필드를 즉석에서 추가하고 필드가 필요한 경우 해당 필드를 적절한 기본값으로 설정하는 것입니다. 이것이 의미하는 바는 데이터베이스가 테이블 구조의 변경을 방지하기 때문에 읽기 전용으로 만들 수 없다는 것입니다. 이 문제를 해결하기 위해 모든 사용자에게 db_datareader, db_denydatawriter 및 db_ddladmin 역할을 부여합니다.
이 모든 것이 실제로 잘 작동하며 문제가 없습니다. 그러나 데이터는 여전히 dbo (나)에 의해 변경 될 수 있습니다. 언젠가는 실수로이 역사적인 데이터를 변경하고 (아마도이를 깨닫지 못한 채로) 우연히 무결성을 손상시킬 것이라고 내 관심사가 있습니다.
시도 솔루션 :
나는 DBO에 db_denydatawriter의 역할을 할당하려하지만합니다 (aforementioned question 참조) 실패했습니다.
또 다른 제안은 스키마를 변경할 때 스냅 샷의 읽기 전용 상태를 끄고 켜는 것입니다. 이는 스냅 샷 스키마 변경 당 약 2 분의 지연을 유발한다는 점을 제외하면 작동합니다. 우리는 일반적으로 많은 스키마 변경을하지는 않지만 가능한 경우 상황을 피하고 싶습니다.
다른 아이디어는 크게 감사하겠습니다.