2011-12-15 2 views
2

일부 쿼리를 실행하기 전에 ANSI_NULLS 및 기타 데이터베이스 옵션을 설정해야합니다. 그래서명령 텍스트에 ANSI_NULLS를 설정하면 오류가 발생합니다.

SqlCommand cmd = new SqlCommand(query_prefix + "SELECT UserID,FirstName,MiddleName,LastName FROM mydb.dbo.UserInfo where UserID=10277",con); 

으로 사용 내 코드

const string query_prefix = "SET ANSI_NULLS ON \n GO \n SET ANSI_PADDING ON \n GO \n SET ANSI_WARNINGS ON \n GO \n SET CONCAT_NULL_YIELDS_NULL ON \n GO \n SET QUOTED_IDENTIFIER ON \n GO \n SET NUMERIC_ROUNDABORT OFF \n GO \n "; 

에 나는 위의 GO ON GO SET의 ANSI_PADDING ON SET의 ANSI_NULLS가 오류를 포기했기 때문에 "N \" "GO 근처의 구문이 잘못되었습니다"를 추가했다. 관리 스튜디오에서 GO가 줄 바꿈에 있으면 잘못된 구문 오류가 발생하지 않습니다. 그렇지 않으면 않습니다. 그래서 "\ n"을 추가했지만 여전히 오류가 발생합니다.

그래서 어떻게 이러한 데이터베이스 옵션을 코드에서 설정합니까? 나는 절차를 사용할 수 없다.

답변

3

GO는 SSMS의 배치 구분 기호이며 SQL 명령이 아니며 이와 같은 쿼리에 포함될 수 없습니다.

3
  • 를 열고 연결

샘플 코드가 될 수

  • 동일한 연결에서 분리하는 SqlCommand로 선택 문을 실행 ExecuteNonQuery 메서드와 SET ANSI_NULLS ON 및 SET_ANSI_PADDING_ON을 실행하는 SqlCommand 개체를 만듭니다 이 SO post에서 발견되었습니다. 사용자 환경에 적합한 경우 데이터베이스 레벨에서이 설정의 기본값을 설정할 수도 있습니다.

  • 관련 문제