

# Amazon RDS for Microsoft SQL Server의 데이터 정렬 및 문자 세트 관리
<a name="Appendix.SQLServer.CommonDBATasks.Collation"></a>

이 주제에서는 Amazon RDS에서 Microsoft SQL Server의 데이터 정렬 및 문자 세트를 관리하는 방법에 대한 지침을 제공합니다. 데이터베이스 생성 중에 데이터 정렬을 구성하고 나중에 수정하여 언어 및 로캘 요구 사항에 따라 텍스트 데이터를 적절하게 처리하는 방법을 설명합니다. 또한 Amazon RDS의 SQL Server 환경에서 호환성 및 성능을 유지하기 위한 모범 사례를 다룹니다.

SQL Server는 여러 수준에서 콜레이션을 지원합니다. DB 인스턴스를 생성할 때 기본 서버 콜레이션을 설정합니다. 데이터베이스, 테이블 또는 열 수준에서 콜레이션을 재정의할 수 있습니다.

**Topics**
+ [Microsoft SQL Server의 서버 수준 콜레이션](#Appendix.SQLServer.CommonDBATasks.Collation.Server)
+ [Microsoft SQL Server의 데이터베이스 수준 콜레이션](#Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column)

## Microsoft SQL Server의 서버 수준 콜레이션
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Server"></a>

Microsoft SQL Server DB 인스턴스를 생성할 때 사용하려는 서버 콜레이션을 설정할 수 있습니다. 다른 콜레이션을 선택하지 않으면 서버 수준 콜레이션이 SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS으로 기본 설정됩니다. 모든 데이터베이스 및 데이터베이스 객체에 서버 콜레이션이 기본적으로 적용됩니다.

**참고**  
DB 스냅샷에서 복원할 때 데이터 정렬을 변경할 수 없습니다.

현재 Amazon RDS에서는 다음과 같은 서버 콜레이션을 지원합니다.


| 콜레이션 | 설명 | 
| --- | --- | 
|  Arabic\$1CI\$1AS  |  아랍어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Chinese\$1PRC\$1BIN2  |  중국어-중화인민공화국어, 이진 코드 포인트 비교 정렬  | 
|  Chinese\$1PRC\$1CI\$1AS  |  중국어-중화인민공화국어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Chinese\$1Taiwan\$1Stroke\$1CI\$1AS  |  중국어-대만어-스트로크, 소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Danish\$1Norwegian\$1CI\$1AS  |  덴마크어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS  |  덴마크-노르웨이어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS\$1WS  |  덴마크-노르웨이어, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1WS  |  덴마크-노르웨이어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 구분  | 
|  Danish\$1Norwegian\$1CS\$1AI  |  덴마크-노르웨이어, 대소문자 구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Danish\$1Norwegian\$1CS\$1AI\$1KS  |  덴마크-노르웨이어, 대소문자 구분, 액센트 비구분, 일본어 가나 구분, 전자/반자 비구분  | 
|  Finnish\$1Swedish\$1100\$1BIN  |  Finnish-Swedish-100, 이진 정렬  | 
|  Finnish\$1Swedish\$1100\$1BIN2  |  Finnish-Swedish-100, 이진 코드 포인트 비교 정렬  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AI  |  Finnish-Swedish-100, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AS  |  Finnish-Swedish-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Finnish\$1Swedish\$1CI\$1AS  |  핀란드어, 스웨덴어, 스웨덴어(핀란드), 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  French\$1CI\$1AS  |  프랑스어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Greek\$1CI\$1AS  |  그리스어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Greek\$1CS\$1AS  |  그리스어, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Hebrew\$1BIN  |  히브리어, 이진 정렬  | 
|  Hebrew\$1CI\$1AS  |  히브리어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Japanese\$1BIN  | 일본어, 이진 정렬 | 
|  Japanese\$1CI\$1AS  |  일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Japanese\$1CS\$1AS  |  일본어, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS  |  일본어, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 비구분  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS  |  일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS  |  일본어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 보조 문자, 변형 선택기 구분  | 
|  일본어\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS  |  일본어, 대소문자 구분, 액센트 구분, 일본어 가나 구분, 전자/반자 구분, 보조 문자, 변형 선택기 비구분  | 
|  Korean\$1Wansung\$1CI\$1AS  |  한국어-완성형, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Latin1\$1General\$1100\$1BIN  |  라틴어1-일반-100, 이진 정렬  | 
|  Latin1\$1General\$1100\$1BIN2  |  라틴어1-일반-100, 이진 코드 포인트 비교 정렬  | 
|  Latin1\$1General\$1100\$1BIN2\$1UTF8  |  Latin1-General-100, 이진 코드 포인트 비교 정렬, UTF-8 인코딩  | 
|  Latin1\$1General\$1100\$1CI\$1AS  |  라틴어1-일반-100, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Latin1\$1General\$1100\$1CI\$1AS\$1SC\$1UTF8  |  Latin1-General-100, 대소문자 비구분, 액센트 구분, 보조 문자, UTF-8 인코딩  | 
|  Latin1\$1General\$1BIN  |  라틴어1-일반, 이진 정렬  | 
|  Latin1\$1General\$1BIN2  |  라틴어1-일반, 이진 코드 포인트 비교 정렬  | 
|  Latin1\$1General\$1CI\$1AI  |  라틴어1-일반, 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Latin1\$1General\$1CI\$1AS  |  라틴어1-일반, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Latin1\$1General\$1CI\$1AS\$1KS  |  라틴어1-일반, 대소문자 비구분, 액센트 구분, 일본어 가나 구분, 전자/반자 비구분  | 
|  Latin1\$1General\$1CS\$1AS  |  라틴어1-일반, 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Modern\$1Spanish\$1CI\$1AS  |  현대-스페인어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Polish\$1CI\$1AS  |  폴란드어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  SQL\$11xCompat\$1CP850\$1CI\$1AS  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 49  | 
|  SQL\$1Latin1\$1General\$1CP1\$1CI\$1AI  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 54  | 
|  **SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS(기본값)**  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 52  | 
|  SQL\$1Latin1\$1General\$1CP1\$1CS\$1AS  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1252의 SQL Server 정렬 순서 51  | 
|  SQL\$1Latin1\$1General\$1CP437\$1CI\$1AI  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 437의 SQL Server 정렬 순서 34  | 
|  SQL\$1Latin1\$1General\$1CP850\$1BIN  |  라틴어1-일반, 유니코드 데이터의 경우 이진 정렬 순서, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 40  | 
|  SQL\$1Latin1\$1General\$1CP850\$1BIN2  |  라틴어1-일반, 유니코드 데이터의 경우 이진 코드 포인트 비교, 비 유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 40  | 
|  SQL\$1Latin1\$1General\$1CP850\$1CI\$1AI  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 비구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 44  | 
|  SQL\$1Latin1\$1General\$1CP850\$1CI\$1AS  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 42  | 
|  SQL\$1Latin1\$1General\$1Pref\$1CP850\$1CI\$1AS  |  Latin1-General-Pref, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 850의 SQL Server 정렬 순서 183  | 
|  SQL\$1Latin1\$1General\$1CP1256\$1CI\$1AS  |  라틴어1-일반, 유니코드 데이터의 경우 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비 유니코드 데이터의 경우 코드 페이지 1256의 SQL Server 정렬 순서 146  | 
|  SQL\$1Latin1\$1General\$1CP1255\$1CS\$1AS  |  Latin1-General, 유니코드 데이터의 경우 대소문자 구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분, 비유니코드 데이터의 경우 코드 페이지 1255의 SQL Server 정렬 순서 137  | 
|  Thai\$1CI\$1AS  |  프랑스어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 
|  Turkish\$1CI\$1AS  |  터키어, 대소문자 비구분, 액센트 구분, 일본어 가나 비구분, 전자/반자 비구분  | 

AWS CLI를 사용하여 프로그래밍 방식으로 지원되는 데이터 정렬 목록을 검색할 수도 있습니다.

```
aws rds describe-db-engine-versions --engine sqlserver-ee --list-supported-character-sets --query 'DBEngineVersions[].SupportedCharacterSets[].CharacterSetName' | sort -u
```

콜레이션을 선택하려면 다음을 수행하세요.
+ Amazon RDS 콘솔을 사용하는 경우 새 DB 인스턴스를 생성할 때 **Additional configuration**(추가 구성)을 선택한 다음 **Collation**(데이터 정렬) 필드에 데이터 정렬을 입력합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ AWS CLI를 사용하는 경우 `--character-set-name` 명령과 함께 `create-db-instance` 옵션을 사용합니다. 자세한 내용은 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)를 참조하세요.
+ Amazon RDS API를 사용하는 경우 `CharacterSetName` 작업과 함께 `CreateDBInstance` 파라미터를 사용합니다. 자세한 내용은 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)를 참조하세요.

## Microsoft SQL Server의 데이터베이스 수준 콜레이션
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column"></a>

새로운 데이터베이스 또는 데이터베이스 객체를 생성하면서 데이터 정렬을 무시하면 데이터베이스, 테이블 또는 열을 기준으로 기본 데이터 정렬을 변경할 수도 있습니다. 예를 들어 기본 서버 콜레이션이 SQL\$1Latin1\$1General\$1CP1\$1CI\$1AS인 경우, Mohawk 콜레이션 지원을 위해 이를 Mohawk\$1100\$1CI\$1AS로 변경할 수 있습니다. 모든 쿼리 인수는 필요에 따라 타입캐스트를 통해 다른 데이터 정렬을 사용할 수 있습니다.

예를 들어 다음 쿼리는 AccountName 열의 기본 콜레이션을 Japanese\$1CI\$1AS로 변경합니다.

```
CREATE TABLE [dbo].[Account]
	(
	    [AccountID] [nvarchar](10) NOT NULL,
	    [AccountName] [nvarchar](100) COLLATE Mohawk_100_CI_AS NOT NULL 
	) ON [PRIMARY];
```

Microsoft SQL Server DB 엔진은 기본적인 NCHAR, NVARCHAR 및 NTEXT 데이터 유형에 따라 Unicode를 지원합니다. 이를 테면 CJK 지원이 필요할 경우 문자 스토리지에 이 세 가지 Unicode 데이터 유형을 사용하면 데이터베이스 및 테이블 생성 시 기본 서버 데이터 정렬을 무시할 수 있습니다. SQL Server에 대한 데이터 정렬 및 Unicode 지원을 설명한 Microsoft 링크를 몇 가지 소개합니다.
+ [Working with Collations](http://msdn.microsoft.com/en-us/library/ms187582%28v=sql.105%29.aspx) 
+ [Collation and International Terminology](http://msdn.microsoft.com/en-us/library/ms143726%28v=sql.105%29) 
+ [Using SQL Server Collations](http://msdn.microsoft.com/en-us/library/ms144260%28v=sql.105%29.aspx) 
+ [International Considerations for Databases and Database Engine Applications](http://msdn.microsoft.com/en-us/library/ms190245%28v=sql.105%29.aspx)