5

NHibernate 및 SQL Server 2005를 사용하며 테이블 중 하나에서 계산 된 열에 인덱스가 있습니다.SQL 서버 - 'ARITHABORT'로 인해 INSERT가 실패했습니다.

INSERT failed because the following SET options have incorrect settings: 'ARITHABORT'

내 삽입하기 전에 SET ARITHABORT ON;를 사용하지만 여전히 오류가 있습니다

내 문제는 내가 다음과 같은 오류가 해당 테이블에 레코드를 삽입 할 때이다. 계산 된 열이있는 테이블에 삽입 들어

답변

5

, 이러한 설정 옵션이 필요합니다

NUMERIC_ROUNDABORT 옵션이 OFF로 설정해야하며, 다음과 같은 옵션을 ON으로 설정해야합니다 :

ANSI_NULLS 
ANSI_PADDING 
ANSI_WARNINGS 
ARITHABORT 
CONCAT_NULL_YIELDS_NULL 
QUOTED_IDENTIFIER 

시도가 추가 이는 삽입하기 전에 :

set NUMERIC_ROUNDABORT off 
set ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER on 

insert ... 
+0

'당신의 연결 '이란 무슨 뜻입니까? NHibernate에서 세션 생성시이를 설정해야합니까? 삽입, 업데이트 및 삭제시에만 ARITHABORT를 ON으로 설정합니다. –

+0

이것은 세션 수준 옵션이므로 연결시 한 번만 수행하면되지만 문제없이 여러 번 설정할 수 있습니다. 업데이트 된 답변보기 – muhmud

+0

Fluent NHibernate를 사용합니다. 구성 방법을 알려주시겠습니까? –

5

은 오늘이 문제로 실행하고 해결 얻었다. SQL Server 2008 R2의 열에 필터 된 인덱스를 만들었지 만 삽입 할 때이 오류가 발생합니다. 이 질문은 모든 삽입물에서 항상 arithabort를 켜는 것이 지루할 수도 있으므로 완전히 대답하지는 못했습니다. 문제였던 데이터베이스 호환성 수준을 보여주는 블로그를 발견했습니다. 호환성 수준을 80 (2000)에서 100 (2008)으로 변경하여 문제가 해결되었습니다. 호환성 수준을 90으로 변경하면이 문제가 해결 될지 확실하지 않지만 시도해 볼 가치는 있습니다.

여기에서 변경할 SQL Server 호환성 수준 및 명령. http://msdn.microsoft.com/en-us/library/bb510680.aspx

이 작동하지 않습니다 또는이 변경이 테스트에서 수행되었다 내가 http://chrismay.org/2013/05/23/interesting-problem-with-sql-server-arithabort-filtered-indexes-calculated-columns-and-compatibility-mode-of-80/

참고 여기에 대해 얘기했다 블로그에 트리거를 추가하여 다른 해결 방법은 호환성 모드를 변경할 수없는 경우 데이터베이스 및 모든 응용 프로그램은 프로덕션 환경에서 이와 같이 변경하기 전에 테스트해야합니다. 변경하기 전에 DBA에게 확인하십시오.

+0

거주중인 DBA가 * compatibilitylevel *의 변경을 진심으로 기원합니다. 이 변경 작업을 가볍게 수행하지 않거나 모든 응용 프로그램에 대한 광범위한 테스트없이 데이터베이스를 사용해야합니다. –

+1

나는 DBA이고 테스트 데이터베이스에서 매주 백업본을 백업하여 스크립트를 백업하여 스크립트를 백업하는 것이 좋다 :-) 프로덕션 환경에서 변경되기 전에 더 많은 테스트를해야한다. – bpfrenchak

+0

좋습니다. 그것은 당신의 대답에 추가되어야합니다. –

0

중단하여 데이터베이스 옵션을 변경할 수 있으므로 SET 옵션은 오른쪽으로 산술을 확인 한 다음 속성을 열고 연결 탭을 선택, 서버 이름을 클릭하고,

ALTER DATABASE [$(DatabaseName)] 
     SET ANSI_NULLS OFF, 
      ANSI_PADDING OFF, 
      ANSI_WARNINGS OFF, 
      ARITHABORT OFF, 
      CONCAT_NULL_YIELDS_NULL OFF, 
      NUMERIC_ROUNDABORT OFF, 
      QUOTED_IDENTIFIER OFF 
     WITH ROLLBACK IMMEDIATE; 
0

열기 SQL 서버 자문 스튜디오 세계적으로 사용할 수있는 응용 프로그램에서 (업데이트 기록 있음)이 내 문제 해결 저장 프로 시저를 실행하는 동안 옵션

1

나는이 오류가 발생했습니다 : 그러니까 기본적으로 https://support.microsoft.com/en-us/kb/305333

을, 나는 코드 세트를 추가 내 저장 프로 시저를 실행하기 전에

sqlConn = New SqlConnection(connectionString) 
If sqlConn.State = ConnectionState.Closed Then sqlConn.Open() 

sqlCmd = New SqlCommand() 
With sqlCmd 
    .Connection = sqlConn 
    .CommandType = CommandType.text 
    .CommandText = "SET ARITHABORT ON" 
    .ExecuteNonQuery() 

    .CommandType = CommandType.StoredProcedure 
    .CommandText = "MY PROCEDURE" 
    .ExecuteNonQuery() 
End With 

희망이 있으면 도움이 될 것입니다.