1934: INSERT/UPDATE failed because the following SET options have incorrect settings (다음 SET 옵션의 설정이 잘못되어 INSERT/UPDATE 실패)
SQL Server의미
필요한 SET 옵션이 잘못 설정되어 DML 작업(INSERT/UPDATE/DELETE)이 실패했다. 보통 indexed view, 계산 컬럼 인덱스, filtered index, spatial/XML 인덱스에 필수인 SET 설정이 충족되지 않을 때 발생한다.
원인
영향을 받는 테이블/뷰에 특정 SET 옵션(특히 QUOTED_IDENTIFIER와 ANSI_NULLS ON, NUMERIC_ROUNDABORT OFF 등)이 필요한 객체가 있지만, 세션의 현재 SET 옵션이 그 요구 사항을 충족하지 않는다. 오래된 클라이언트 드라이버나 잘못된 SET 옵션을 명시적으로 설정하는 스크립트가 원인이다.
해결 방법
연결/세션에 필요한 옵션을 설정한다: SET QUOTED_IDENTIFIER ON; SET ANSI_NULLS ON; SET ANSI_PADDING ON; SET ANSI_WARNINGS ON; SET CONCAT_NULL_YIELDS_NULL ON; SET ARITHABORT ON; SET NUMERIC_ROUNDABORT OFF; 애플리케이션 드라이버가 연결 시 이 옵션을 올바르게 보내는지 확인한다. 오류 메시지에 잘못된 옵션이 명시되어 있으므로 해당 옵션을 수정한다.
같은 데이터베이스의 다른 항목
- 5061ALTER DATABASE failed because a lock could not be placed on database (데이터베이스에 락을 걸 수 없어 ALTER DATABASE 실패)
- 3702Cannot drop database because it is currently in use (사용 중이어서 데이터베이스 삭제 불가)
- 15138The database principal owns a schema in the database, and cannot be dropped (database principal이 스키마를 소유하고 있어 삭제 불가)
- 468Cannot resolve the collation conflict
- 4864Bulk load data conversion error (type mismatch or invalid character) (대량 로드 데이터 변환 오류)
- 916The server principal is not able to access the database under the current security context (서버 보안 주체가 현재 보안 컨텍스트에서 데이터베이스에 접근할 수 없음)