ARITHABORT ON으로 변경 위험


12

핵심 응용 프로그램을 제공하는 방식으로 공급 업체와 협력하고 있으며 핵심 응용 프로그램을 수정하지 않는 한 내 확장을 만들 수 있습니다. SQL Server 2005 데이터베이스에 연결하는 ColdFusion에 내장되어 있습니다.

내가 작성한 일부 보고서는 코어 테이블에서 계산 된 함수를 사용하는 뷰에 의존하며 테이블이 커질수록 보고서 속도가 매우 느려집니다. 보고서 속도를 높이기 위해 인덱싱 된 뷰 를 사용하고 싶습니다 . 그러나 테스트 환경에서 인덱싱 된 뷰를 만든 후 코어 응용 프로그램이 더 이상 코어 테이블에 삽입 할 수 없습니다 ( 인덱싱 된 뷰 ARITHABORT를 사용할 ON때 필요한 오류 메시지가 반환 됨 ).

따라서 인덱싱 된 뷰를 사용 SET ARITHABORT ON하려면 코어 테이블을 삽입 / 업데이트 할 때마다 코어 응용 프로그램이 있어야합니다 . 내 테스트 환경에서 이것을 실행했습니다.

ALTER DATABASE MyDatabase SET ARITHABORT ON;

잘 작동하는 것 같습니다. 그러나 공급 업체는 응용 프로그램에 수천 개의 쿼리가 있기 때문에이 설정으로 인해 이러한 쿼리 중 하나가 중단 될 수 있으며 향후 예기치 않은 데이터베이스 문제가 발생하면 기본 설정을 복원해야한다고 주장합니다.

에 의해 깨질 실제 쿼리가 SET ARITHABORT ON있습니까? 그것을 유지하는 것이 더 나은 상황이 OFF있습니까?

TL; DR 새로운 인덱싱 된 뷰가 작동 ARITHABORT ON하려면 전체 데이터베이스에 대해 설정해야 하지만 공급 업체는 자신의 위험에 처할 것이라고 경고합니다. 실제로 위험이 있습니까?

답변:


9

따라서 SET ARITHABORT ON 기본적으로 "0으로 나누기 오류가 발생하거나 산술 오버플로가 발생하면 쿼리가 중단됩니다" 라고 말합니다. 일반적으로 바람직한 동작이며 기본 인스턴스 전체 설정입니다. 이로 인해 공급 업체의 쿼리에 문제가 발생하면 코딩 문제로 어려움을 겪고 있다고 말할 수 있습니다. 나는 그들이 왜 여기에 관심이 있는지에 대한 자세한 내용을 물어볼 것입니다.

인덱싱 된 뷰 의 모든 규칙 중에서이 규칙 과 많은 옵션 옵션 규칙을 가장 논란의 여지가없는 것으로 부릅니다.

뷰와 상호 작용하는 연결에서 설정해야합니다. 따라서 공급 업체와 협력하고 그들의 추론을 실제로 이해하고 이해하고 그들이 큰 의견 불일치에 대해 그들이 생각하고있는 것에 헌신하도록 노력하고 싶을 것입니다.

즉, 인덱싱 된 뷰는 약간 큰 문제입니다. 다른 규칙이 있으며 공급 업체 개발자가 구축 및 성능 테스트를 수행 할 때 사용했던 응용 프로그램 및 가정에 영향을 줄 수 있습니다. 인덱싱 된 뷰를 통해 해결하려는 비즈니스 문제에 대해 대화하고 문제 해결 방법에 대한 대화에 참여해야합니다.


7

이러한 변경으로 인한 명백한 위험은 이전에 올바르게 실행 된 공급 업체 쿼리가 오류를 발생 시키거나 잘못된 결과를 반환 할 수 있다는 것입니다. 이 ARITHABORT설정은 산술 오버플로0으로 나누기 오류가 NULL결과를 반환 하는지 , 오류가있는 명령문을 종료하거나 오류가있는 배치를 종료 할지 여부를 부분적으로 제어합니다 . 벤더 코드가 리턴하는 대신 오류를 발생시키는 코드에 반응하는 방법은 NULL프로덕션 시스템에서 실험 해보고 싶은 것이 아닙니다. :)

그러나 데이터베이스 호환성 수준이 90 이상이고 세션이로 실행되면 위험이 줄어 듭니다 SET ANSI_WARNINGS ON. 이 설정은 ON인덱싱 된 뷰를 테스트 할 때였지만 공급 업체 응용 프로그램의 연결에 사용 된 유효 설정 을 확인해야 합니다. Management Studio는 SET연결시 공급 업체 코드에서 설정 한 옵션과 다른 옵션 을 사용하도록 구성 할 수 있습니다 ( 데이터베이스 또는 인스턴스 기본값으로 재정의 할 수 없음 ). 공급 업체에 문의하고 SQL Server 프로파일 러를 사용하여 공급 업체 코드를 추적하여 확인하십시오.

아마도 더 큰 위험은 설정이 (으)로 돌아갈 때까지 공급 업체가 설치를 지원하지 않을 OFF것이지만 권장 공급 업체가 권장 SET옵션 으로 작동하도록 공급 업체에게 코드를 업데이트하도록 권장해야 하므로 다음 중 하나를 선택할 필요가 없습니다. 성능 및 지원되는 설치 실행 대안은 물론 데이터베이스 사본에 대해 보고서를 실행하는 것입니다.

-- Recommended effective settings
SET NUMERIC_ROUNDABORT OFF;
SET ARITHABORT, 
    CONCAT_NULL_YIELDS_NULL, 
    QUOTED_IDENTIFIER, 
    ANSI_NULLS, 
    ANSI_PADDING,
    ANSI_WARNINGS ON;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.