모든 열 데이터 정렬을 데이터베이스 기본값으로 유지하는 권장 사항은 지침이나 모범 사례와 비슷합니다.
당신은 전적으로 정확합니다.
일부 사람들에게 왜 그렇게 심각한 오류로 간주됩니까?
"당신은 절대 사용 해서는 안된다"는 말을 자주 듣거나 읽는 것과 같은 이유로
- 커서
GOTO
진술
- SQLCLR
WITH (NOLOCK)
- 등
일부 기능 / 옵션 / 기술은 다른 기능보다 복잡하며 일반적으로 사용시 문제가 발생할 가능성이 문제가 없을 가능성보다 훨씬 크기 때문에 사용자가 더 많은 지식을 필요로합니다. 따라서 일반 인구에 대한 규칙을 일반화하는 것이 더 쉽습니다. 최대 작성할 때 사실, 직장에서 "코딩 표준"나는 항상하는 규칙해야합니다 결코를CURSOR를 사용하지만 "언제"를 사용하는 방법과 효과적으로 사용하는 방법을 알고 있기 때문에 직접 사용합니다. 그러나 가끔 쿼리를 작성하는 사람들은 그 사실을 알 필요가 없습니다. 이것은 "무엇을하고 있는지 절대 알지 않는 한 레지스트리를 편집하지 마십시오"또는 우리가 (아주 어린) 아이들의 부모로서하는 규칙과 유사합니다. 특정 작업을 수행하는 것이 좋을 때 또는 수행 방법에 대한 복잡성을 극복 할 수 없습니다.
데이터 정렬의 경우, 이것은 매우 복잡하고 혼란스러운 주제이며, 하드 오류 (이 문제는 분명하지만 문제를 쉽게 해결할 수 있기 때문에 문제는 적음)와 "홀수"문제가 발생할 수 있습니다. 사물이 왜 그런 방식으로 행동하는지 설명하기 어려운 행동 (일부 항목이 예상 밖의 필터링되거나 필터링되지 않는 이유 또는 정렬이 예상 밖의 행동하는 이유) 그리고 슬프게도, 대량의 혼란을 야기하는 약간의 잘못된 정보가 떠 다니는 것 같습니다. 실제로 데이터 정렬 및 인코딩 등에 대한 일반적인 지식을 크게 높이고 잘못된 정보와 신화에 대항하기를 희망하지만 아직 릴리스 할 준비가되지 않은 프로젝트를 진행하고 있습니다 (이 작업을 링크로 업데이트 함).
데이터 정렬의 경우 비즈니스 사례에 가장 적합한 것을 사용해야합니다. 테이블이나 데이터베이스에서 데이터 정렬을 혼합하지 않는다는 개념이 기본 방법이지만 시스템 카탈로그 뷰의 다양한 열에 사용 된 데이터 정렬을 보면 다양한 데이터 정렬이 사용되는 것을 알 수 있습니다. 따라서 데이터 정렬이 다를 경우 의도적이어야하지만 본질적으로 아무런 문제가 없다는 질문의 주요 인용에 동의합니다.
질문에서 이것에 관해 (강조 추가) :
Octopus Deploy Server를 구성하는 동안 OctopusServer 인스턴스 초기화 중에 치명적 오류와 함께 설치가 실패합니다. 오류 메시지와 관련된 기사에서는 이것이 왜 요구 사항인지 설명하지 않습니다.
링크 된 문서 페이지를 확인했는데 왜 그것이 요구 사항인지 설명합니다. 아래 해당 문서에서 관련 정보를 복사했습니다.
Octopus 데이터베이스에있는 모든 개체의 데이터 정렬도 변경해야합니다. 그렇지 않으면 Octopus 버전 업그레이드 중에 데이터베이스를 수정할 때 오류가 발생할 수 있습니다. 작성된 새 오브젝트는 업데이트 된 데이터 정렬을 사용하며, 예를 들어 원래 데이터 정렬을 사용하여 이러한 오브젝트와 기존 오브젝트 사이에서 SQL 조인을 수행하려고하면 데이터 정렬 불일치 오류가 발생할 수 있습니다.
Octopus 데이터베이스의 코드는 문자열 열 사이에 JOIN이 있으며 향후 업그레이드에서 새 문자열 열에 추가 JOIN이있는 새로운 코드가 도입 될 수 있다고 합니다. via CREATE TABLE
또는을 통해 새 열에 ALTER TABLE ... ADD
데이터베이스의 기본 데이터 정렬이 할당됩니다.COLLATE
새 문자열 열에 키워드가 지정되지 않았습니다. 그리고 동일한 데이터 정렬을 갖지 않는 문자열 열 사이의 JOIN은 데이터 정렬 불일치 오류를 생성합니다. 그들은 또한 사용자가 콜 레이션이 대소 문자를 구분하지 않아야한다는 유일한 요구 사항이기 때문에 사용자가 자신의 콜 레이션을 선택할 수있는 것처럼 보입니다 (다른 로케일을 수용 할 수 있음). 코드가 존재하는 데이터베이스의 데이터 정렬이 항상 동일한 것은 보장되지 않으므로 COLLATE
키워드를 사용하여 모든 새 문자열 열에서 동일한 데이터 정렬을 강제로 적용 할 수는 없습니다 (기술적으로는 가능하지만 동적이 필요함). SQL은 업데이트 스크립트를 생성 할 때 다루기가 쉽지 않습니다). 그들이 사용할 수 있다면 COLLATE
키워드를, 그들은 수데이터베이스의 기본 데이터 정렬이 문자열 열과 다른 것을 피하십시오. 이렇게하면 어려운 "콜 레이션 불일치"오류를 피할 수 있지만 해당 문자열 열 중 하나를 포함하는 비교 연산의 가능성과 데이터베이스의 데이터 정렬이 아닌 열의 데이터 정렬을 사용하는 "홀수"동작을 유발하는 문자열 리터럴 또는 변수가 여전히 남아 있습니다. 대조. 물론 이것은 예상되는 동작 일 수 있습니다. 그러나 이것은 타사 응용 프로그램이므로 a) 사용자가 원하는 것 (또는 반대하지 않았 음)과 b) 사용자가 버그를 고려한 것 사이의 50 / 50 기회가 아니라 의도 된 것이어야합니다. 야생 거위 추적 및 / 또는 해당 소프트웨어의 버그에 대한 블로그에서 공급 업체의 지원 시간을 낭비합니다.