SQL Server 데이터베이스의 데이터 정렬을 어떻게 변경합니까?

SQL Server 데이터베이스의 데이터 정렬을 어떻게 변경합니까?

단일 데이터 정렬인 Latin1_General_CI_AS(표준 데이터 정렬)로 모든 데이터베이스를 표준화하려고 합니다. SQL_Latin1_General_CP1_CI_AS에 일부 데이터베이스가 있습니다.

ALTER DATABASE를 사용하여 데이터베이스 데이터 정렬을 변경할 수 있다는 것을 알고 있지만 이는 새 개체에만 영향을 미칩니다. 제가 이해한 바에 따르면 기존 열을 변경하는 유일한 방법은 모든 테이블의 각 열에 대해 ALTER COLUMN을 수행하는 것입니다. 그렇게 하려면 모든 인덱스를 삭제하고 다시 만들어야 합니다.

나는 다음과 같이 보일 것이라고 생각합니다 :

DROP INDEX indexname ON tablename

GO

ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL

GO

CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)

전체 데이터베이스의 모든 varchar, char, text, nvarchar, nchar 및 ntext 열에 대해 반복합니다. 그건막대한SQL 스크립트.

이 작업을 수행하는 더 쉬운 방법이 있습니까? 아니면 SQL 스크립트 생성을 자동화하는 방법을 제안할 수 있는 사람이 있습니까?

답변1

MS KB 325335전체 DB와 모든 열에 대해 이 작업을 수행하는 방법에 대한 옵션이 있습니다.

원래:

  1. 스크립트 데이터베이스 테이블(새 데이터 정렬 포함)
  2. DTS/SSIS 데이터(조합 보기)
  3. 제약 조건 추가

답변2

약간의 조정이 필요할 수도 있지만 "SQL Server 2000 Collation Changer" 유틸리티를 사용하여 성공했습니다. http://www.codeproject.com/KB/database/ChangeCollation.aspx

답변3

불행히도 이는 SQL Server에서 쉬운 작업이 아닙니다.

기존 데이터베이스 개체(테이블, 저장 프로시저, 뷰 등)에 대해 Redgate의 SQL 비교와 같은 스크립팅 도구를 사용할 수 있습니다. 라이선스가 없으면 무료 평가판을 사용할 수 있습니다. 올바른 데이터 정렬을 사용하여 새 데이터베이스를 만들고 스크립트에서 개체를 다시 작성한 후에는 SSIS를 실행하여 한 데이터베이스에서 다른 데이터베이스로 데이터를 전송할 수 있습니다. 데이터가 많으면 T-SQL 대량 삽입을 사용하세요.

해당 서버의 향후 데이터베이스에 대한 올바른 데이터 정렬을 유지하려면 서버의 기본 데이터 정렬을 변경할 수 있습니다. 다음 MSDN 문서에서는 ALTER DATABASE 및 ALTER TABLE의 COLLATE 절을 사용하여 변경된 사항을 설명합니다.

데이터베이스 데이터 정렬 설정 및 변경(SQL Server 2008 온라인 설명서)

COLLATE 절을 사용하여 사용자 데이터베이스에 생성된 새 개체의 데이터 정렬을 변경할 수 있습니다.데이터베이스 변경성명. 이 문은 기존 사용자 정의 테이블의 열 데이터 정렬을 변경하지 않습니다. 이는 COLLATE 절을 사용하여 변경할 수 있습니다.테이블 변경.

데이터베이스 데이터 정렬을 변경하면 다음이 변경됩니다.

  • 데이터베이스의 기본 데이터 정렬입니다. 이 새로운 기본 데이터 정렬은 이후에 데이터베이스에 생성된 모든 열, 사용자 정의 데이터 형식, 변수 및 매개 변수에 적용됩니다. 또한 데이터베이스에 정의된 개체에 대해 SQL 문에 지정된 개체 식별자를 확인할 때도 사용됩니다.
  • 시스템 테이블의 모든 char, varchar, text, nchar, nvarchar 또는 ntext 열은 새 데이터 정렬로 변경됩니다.
  • 저장 프로시저 및 사용자 정의 함수에 대한 모든 기존 char, varchar, text, nchar, nvarchar 또는 ntext 매개 변수와 스칼라 반환 값은 새 데이터 정렬로 변경됩니다.
  • char, varchar, text, nchar, nvarchar 또는 ntext 시스템 데이터 형식과 이러한 시스템 데이터 형식을 기반으로 하는 모든 사용자 정의 데이터 형식은 새로운 기본 데이터 정렬로 변경됩니다.

답변4

이 유틸리티를 사용해 보세요, 주어진 소스 데이터베이스는 대상 데이터베이스에 적용하는 데 필요한 모든 스크립트를 생성하므로 데이터 정렬이 안전하게 변경됩니다.

관련 정보