DBAtlas · 데이터베이스 운영 아틀라스

3906: Failed to update database because the database is read-only (데이터베이스가 읽기 전용이어서 갱신 실패)

SQL Server

의미

읽기 전용으로 표시된 데이터베이스에서 데이터를 수정(INSERT/UPDATE/DELETE/DDL)하려 했다. SQL Server가 쓰기를 거부했다.

원인

데이터베이스가 READ_ONLY로 설정되었거나, 연결이 Availability Group의 secondary replica(읽기용)로 갔거나, 스냅샷이나 복원 후 데이터베이스가 읽기 전용으로 남았거나, 파일 시스템이 읽기 전용인 경우다. 애플리케이션이 실수로 secondary replica로 라우팅되는 것이 전형적인 원인이다.

해결 방법

정말 쓰기가 가능해야 한다면: ALTER DATABASE mydb SET READ_WRITE; Availability Group에서는 애플리케이션을 primary replica로 라우팅한다(ReadWrite 연결 라우팅 / ApplicationIntent 확인). 읽기 전용 스냅샷에는 쓸 수 없으므로 원본 데이터베이스를 대상으로 한다. 파일 권한과 파일 시스템도 확인한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목