[SQL] 데이터 정렬 충돌을 해결할 수 없습니다
SQL데이터 정렬 충돌을 해결할 수 없습니다
나는 2008 년 2012 SQL 서버에서 우리의 데이터베이스 (DB1) 중 하나를 이동하고 내가 저장 프로 시저를 실행할 때 나는 다음과 같은 오류가 발생합니다
나는 사용하여 데이터베이스의 데이터 정렬을 변경
ALTER DATABASE [optimiser] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [optimiser] COLLATE SQL_Latin1_General_CP1_CI_AS
ALTER DATABASE [optimiser] SET MULTI_USER
저장 프로 시저를 실행할 때마다하지만 난 여전히 오류가 발생합니다. 은 SP가 다른 데이터베이스 (GE의 ihistorian)에 가입 사용하고 있기 때문에 나는 생각과는 대조 불일치가 있습니다. 이 문제를 해결하기 위해 어쨌든있다.
이전 서버 DB1에 Latin1_General_CI_AS으로 설정이 잘 작동했다. DB를위한 새로운 위치는 SQL_Latin1_General_CP1_CI_AS 데이터의 기본이있다. 그것은 Latin1_General_CI_AS에 새 서버 다시 정렬 N DB1을 변경 가치가?
해결법
-
==============================
1.데이터 정렬에 대한 문제는 데이터베이스 자체 정렬, 모든 테이블을 가지고 있으며, 비록 모든 열은 자신의 정렬을 가질 수 있다는 것입니다. 지정되지 않은 경우는 부모 객체의 기본이 필요하지만 다를 수 있습니다.
데이터 정렬에 대한 문제는 데이터베이스 자체 정렬, 모든 테이블을 가지고 있으며, 비록 모든 열은 자신의 정렬을 가질 수 있다는 것입니다. 지정되지 않은 경우는 부모 객체의 기본이 필요하지만 다를 수 있습니다.
데이터베이스의 데이터 정렬을 변경하는 경우, 모든 새로운 테이블과 열에 대한 새로운 기본이 될 것이다, 그러나 데이터베이스 내부의 기존 개체의 데이터 정렬을 변경하지 않습니다. 당신은 가서 수동으로 모든 테이블과 컬럼의 정렬을 변경해야합니다.
다행히 일을 할 수있는 인터넷에서 사용할 스크립트가 있습니다. 나는 내가 그들을 시도했지만 여기에 몇 가지 링크입니다하지 않은으로 추천하지 않을거야 :
http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of-all-Database
즉시 데이터베이스에있는 모든 필드의 업데이트 데이터 정렬
http://www.sqlservercentral.com/Forums/Topic820675-146-1.aspx
당신이 두 개의 객체에 다른 데이터 정렬이 필요하거나 데이터 정렬을 변경할 수없는 경우 - 당신은 여전히 COLLATE 명령을 사용하여, 당신은 가입에 대해 원하는 정렬을 선택하는 그들 사이에 가입 할 수 있습니다.
SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE Latin1_General_CI_AS
또는 기본 데이터베이스 데이터 정렬을 사용하여 :
SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE DATABASE_DEFAULT
from https://stackoverflow.com/questions/17616620/cannot-resolve-collation-conflict by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 : 다른 날짜 필드에 삽입 날짜 (0) | 2020.06.05 |
---|---|
[SQL] sqlite3를에서 DELETE CASCADE ON (0) | 2020.06.05 |
[SQL] 매개 변수가 null 또는 비어있는 저장 프로 시저에 있는지 확인 (0) | 2020.06.05 |
[SQL] 많은 관계로 많은 EntityFramework 같은 표 (0) | 2020.06.05 |
[SQL] SQL 쿼리에서 카운트를 캡처 (0) | 2020.06.05 |