2011-07-02 6 views
5

여러 데이터베이스가있는 SQL Server가 있습니다. 나는이 데이터베이스들 중 하나가 변수의 이름에 대소 문자를 구별하고 다른 이름은 그렇지 않길 원한다. 나는 오류없이이 스크립트를 실행할 수 있도록SQL Server의 대소 문자를 구분하는 변수

나는 설정을 변경해야

DECLARE @A int 
DECLARE @a int 

로 인스턴스에서 다른 데이터베이스를 허용하고있는 동안 당신이 경우 (그 변수 이름) 민감하게 하나의 데이터베이스를 변경할 수있는 방법 변수 이름에 대소 문자를 구분하지 않습니까?

답변

10

원하는 동작을 얻으려면 서버 데이터 정렬을 대/소문자 구분으로 변경해야합니다. db에 대한 데이터 정렬 만 변경하면 충분하지 않습니다.


SQL Server 설치의 기본 데이터 정렬 인 SQL_Latin1_General_CP1_CI_AS은 대/소문자를 구분하지 않습니다.

서버의 데이터 정렬을 대소 문자를 구분하지 않는 것으로 수정하려는 것 같습니다. _CS으로 선택하십시오. _CI은 "대/소문자를 구분하지 않음"을 의미하며 대소 문자를 구분하면 _CS입니다. 어쩌면 당신은 Latin1_General_CS_AS을 원할 것입니다.

위의 질문에 대한 답변은 Changing SQL Server collation to case insensitive from case sensitive?입니다. SQL Server Books Online 가입일

:

식별자의 정렬이 정의되는 레벨에 따라

COLLATE (Transact-SQL)

.

  • 로그인 및 데이터베이스 이름과 같은 인스턴스 수준 개체의 식별자에는 인스턴스의 기본 데이터 정렬이 할당됩니다.
  • 데이터베이스의 개체 식별자 (예 : 테이블, 뷰 및 열 이름)에는 데이터베이스의 기본 데이터 정렬이 할당됩니다.

    예를 들어 이름이 대소 문자 만 다른 두 테이블은 대/소문자 구분 데이터 정렬을 사용하여 데이터베이스에 만들 수 있지만 대/소문자 구분 데이터 정렬이없는 데이터베이스에서는 만들 수 없습니다. 자세한 내용은 Database Identifiers을 참조하십시오.

  • 변수의 식별자는, GOTO는 서버 인스턴스의 기본 데이터 정렬에, 임시 저장 프로 시저임시 테이블 레이블.

    연결 컨텍스트가 하나의 데이터베이스와 연결될 때 변수, GOTO 레이블, 임시 저장 프로 시저 및 임시 테이블을 만들 수 있으며 컨텍스트가 다른 데이터베이스로 전환 될 때 참조 할 수 있습니다.

당신은 사용하여 서버 정렬을 확인할 수 있습니다

SELECT SERVERPROPERTY('collation'); 

SQL_Latin1_General_CP1_CI_AS 
(1 row(s) affected) 
관련 문제