2011-09-07 3 views
2

데이터베이스에서 인덱싱 된 뷰를 사용하고 있습니다. 따라서 클라이언트는 세션 연결 설정을 호출해야합니다. 나는 ado.net 연결, 저장 프로 시저를 호출하는 명령을 사용하고 있습니다. 저장 프로 시저를 호출해야 할 때마다 연결을 만듭니다 (연결 풀에서이 작업을 신속하게 수행 할 수 있기를 바랍니다). 그리고이 설정을 현재 연결에 적용하는 명령을 실행합니다.인덱싱 된 뷰를 지원하는 세션 설정

// some code to create a new connection 
//... 
//... 

if (connection.State != ConnectionState.Open) 
{ 
    connection.Open(); 
} 



    using (var cmd = connection.CreateCommand()) 
    { 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = 
          @" 
        SET ANSI_NULLS ON 
        SET ANSI_PADDING ON 
        SET ANSI_WARNINGS ON 
        SET ARITHABORT ON 
        SET CONCAT_NULL_YIELDS_NULL ON 
        SET QUOTED_IDENTIFIER ON 
        SET NUMERIC_ROUNDABORT OFF"; 
     cmd.ExecuteNonQuery(); 
    } 

다른 생각 : 저장 프로 시저의 모든 호출하기 전에 이러한 설정을 추가 :

command.CommandText = 'SET....'; 
command.CommandText += ' EXEC MyStroredProc @...'; 

이 솔루션은 몇 가지 성능 문제가 발생 그렇지?

매번 새로운 연결을 만들어야하는 경우 어떻게해야 추가 작업을 피할 수 있습니까? 이 설정을 자동으로 적용하는 방법은 무엇입니까?

해결책 :

ALTER DATABASE [MyDB] 
    SET 
    ANSI_NULLS ON, 
    ANSI_PADDING ON, 
    ANSI_WARNINGS ON, 
    ARITHABORT ON, 
    CONCAT_NULL_YIELDS_NULL ON, 
    QUOTED_IDENTIFIER ON, 
    NUMERIC_ROUNDABORT OFF 
+0

당신이 SQL 서버의 버전은 무엇을해야합니까를? – VMAtm

+0

@VMAtm 태그가 추가되었습니다. – garik

답변

5

documentation 따르면, 당신은 데이터베이스 수준에서 이러한 설정을 설정할 수 있습니다 만 데이터베이스 수준에서 유효 ALTER 데이터베이스를 사용하여 설정

데이터베이스 설정을하고 명시 적으로 설정된 경우에만 적용됩니다. 데이터베이스 설정은 sp_configure를 사용하여 설정 한 인스턴스 옵션 설정보다 우선합니다.

시도해 보셨습니까?

불행하게도,이 속성은 연결 문자열에 설정 때문에이 SQL 사용 할 수 없습니다

ALTER DATABASE dbname SET ANSI_NULLS ON 
-- etc 
+0

@garik 행운을 빈다. – VMAtm

관련 문제