programing

데이터 정렬 충돌을 해결할 수 없음

i4 2023. 8. 4. 22:38
반응형

데이터 정렬 충돌을 해결할 수 없음

SQL Server 2008에서 2012로 데이터베이스(DB1) 중 하나를 이동했는데 저장 프로시저를 실행하면 다음 오류가 발생합니다.

"SQL_Latin1_General_CP1_" 간의 데이터 정렬 충돌을 해결할 수 없습니다.CI_AS" 및 "Latin1_General_"CI_AS"는 연산과 동일합니다.

다음을 사용하여 데이터베이스의 데이터 정렬을 변경했습니다.

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새 서버의 DB1 컬렉션을 다시 다음으로 변경할 가치가 있습니까?Latin1_General_CI_AS??

데이터베이스에 고유한 정렬이 있더라도 모든 테이블과 모든 열에 고유한 정렬이 있을 수 있습니다.지정하지 않으면 상위 개체의 기본값을 사용하지만 다를 수 있습니다.

데이터베이스의 정렬을 변경하면 모든 새 테이블 및 열에 대한 새 기본값이 되지만 데이터베이스 내의 기존 개체의 정렬은 변경되지 않습니다.모든 테이블과 열의 조합을 수동으로 변경해야 합니다.

다행히도 그 일을 할 수 있는 스크립트들이 인터넷에서 이용 가능합니다.저는 그것들을 먹어보지 않았기 때문에 추천하지 않을 것이지만, 여기 몇 가지 링크가 있습니다.

http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of-all-Database

데이터베이스의 모든 필드에 대한 업데이트 데이터 정렬

http://www.sqlservercentral.com/Forums/Topic820675-146-1.aspx

두 개체에 대해 서로 다른 데이터 정렬이 필요하거나 데이터 정렬을 변경할 수 없는 경우에도 데이터 정렬을 변경할 수 있습니다.JOIN사용하여 그들 사이에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

언급URL : https://stackoverflow.com/questions/17616620/cannot-resolve-collation-conflict

반응형