SQLServer Collation은 열 이름이 올바른 경우를 의미합니까? 그리고 그것을 다루는 방법

StackOverflow https://stackoverflow.com/questions/496628

문제

SQL Server (2000 또는 2005)에서 식별자 이름 (테이블, 열 등)이 올바른 경우에 필요한 경우 데이터베이스 또는 서버 콜레이션을 설정할 수 있습니까? 그렇다면 모든 사례에 민감한 콜레이션에서 사실입니까, 아니면 별도의 설정입니까? (저는 항상 사례 감지 성이 객체 이름이 아닌 데이터에 적용되는 것을 생각했습니다).

아마도 이것은 저장된 Procs와 Queries가 일관된 사례로 작성되지 않았다면 응용 프로그램을 중단 할 것입니다. 모든 쿼리가 데이터베이스 연결의 정리를 설정하는 것과 같은 올바른 경우를 사용하도록 할 필요없이이를 처리 할 수있는 방법이 있습니까?

나는 아마도 SQL 코드가 일관되지 않은 기존 애플리케이션을 가지고 있다는 관점에서 이것을보고 있으며, 다른 콜라이트가있는 데이터베이스에 대해 실행할 수 있기를 원합니다. 어떤 설정이 필요하거나 어떤 데이터베이스/서버 콜라이트 세트를 사용하지 않습니까?

도움이 되었습니까?

해결책

Collation은 쿼리가 케이스 무의미한 지 여부를 결정하는 것입니다. 따라서 스키마가 여러 환경에 대해 작동하는지 확인하는 유일한 방법은 쿼리가 대소 문자를 민감하게 만드는 것입니다. 쿼리가 일관성이없는 경우, 콜로레이션은 대체 무감각이어야합니다. 그렇지 않으면 작동하지 않습니다.

http://msdn.microsoft.com/en-us/library/aa174903(sql.80).aspx

한 가지 주목할 점은 특정 Collation을 사용하여 SQL Server 환경을 설정하면 새 SQL Server 인스턴스를 작성하지 않고는 변경할 수 없다는 것입니다. 따라서 사례에 민감한 것은 일반적으로가는 길입니다. 그런 다음 쿼리에서 일관성을 유지하기 위해 노력하십시오.

Collation이 설정되면 데이터와 메타 데이터 모두에 적용됩니다.

다른 팁

Collation은 이전 버전의 SQL Server로 설정되지만 2005 년 이후에는 객체가 생성 될 때 변경할 수 있습니다.

데이터베이스 기본 Collation은 데이터베이스 내의 객체가 쿼리의 대소 문자에 대한 대응 방식으로 처리되는지 여부를 결정합니다. 이는 모든 개체 이름 (테이블, 열 등)에 적용됩니다.

애플리케이션 코드가 Case Insensentitive Collation 데이터베이스에서 나오는 경우 객체가 잘못 참조하면 Case-Sensitive Collation 데이터베이스에서 실행되지 않을 수 있습니다 (명령문을 실행하거나 저장 프로 시저를 만들려고 시도하거나 저장된 프로 시저를 작성하려고 할 때 메시지가 표시됩니다. 저장된 프로그램 아키텍처, 당신은 상당한 양의 동적 SQL이 없다면이 모든 것을 빨리 잡을 것입니다).

코드가 실행 되더라도 데이터베이스와 다른 콜라이트를 사용하여 개별 열을 설정할 수 있으므로 항상 다른 Collation을 사용하면 코드가 예기치 않게 작동 할 수 있습니다 (예 : 그룹별로 다르게 그룹).

각 객체에 대한 Collation을 설정하고 데이터베이스 및 서버의 기본값도 설정할 수 있습니다.

그것을 다루는 방법? 여기에서 표준을 시행해야합니다. 당신은 다른 사람들이 다른 사례로 글을 쓰는 사람들과 쉽게 얽히게 할 수 있습니다.

Collation은 데이터에도 적용되므로 "Bob"! = "Bob"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top