Collation and Unicode SupportCollation and Unicode Support

SQL ServerSQL Server 의 데이터 정렬은 데이터에 대한 정렬 규칙과 대/소문자 및 악센트 구분 속성을 제공합니다.Collations in SQL ServerSQL Server provide sorting rules, case, and accent sensitivity properties for your data. charvarchar 과 같은 문자 데이터 형식과 함께 사용되는 데이터 정렬은 해당 데이터 형식을 나타내는 데 사용할 수 있는 코드 페이지와 해당 문자를 지정합니다.Collations that are used with character data types such as char and varchar dictate the code page and corresponding characters that can be represented for that data type. SQL ServerSQL Server인스턴스를 설치하든 데이터베이스 백업을 복원하든 서버를 클라이언트 데이터베이스에 연결하든 사용하는 데이터의 로캘 요구 사항, 정렬 순서, 대/소문자 및 악센트 구분 여부를 파악해야 합니다.Whether you are installing a new instance of SQL ServerSQL Server, restoring a database backup, or connecting server to client databases, it is important that you understand the locale requirements, sorting order, and case and accent sensitivity of the data that you are working with. SQL ServerSQL Server의 인스턴스에서 사용 가능한 데이터 정렬을 나열하려면 sys를 참조하세요.fn_helpcollations (Transact-SQL)를 참조하세요.To list the collations available on your instance of SQL ServerSQL Server, see sys.fn_helpcollations (Transact-SQL).

서버, 데이터베이스, 열 또는 식에 대한 데이터 정렬을 선택하면 데이터에 일정한 특성이 부여되며, 이는 여러 데이터베이스 작업의 결과에 영향을 줍니다.When you select a collation for your server, database, column, or expression, you are assigning certain characteristics to your data that affects the results of many operations in the database. 예를 들어 ORDER BY를 사용하여 쿼리를 작성할 경우 결과 집합의 정렬 순서는 쿼리의 식 수준에서 COLLATE 절에 지정되거나 데이터베이스에 적용된 데이터 정렬에 따라 달라집니다.For example, when you construct a query by using ORDER BY, the sort order of your result set might depend on the collation that is applied to the database or dictated in a COLLATE clause at the expression level of the query.

SQL ServerSQL Server의 데이터 정렬 지원을 최대한 활용하려면 이 항목에 정의된 용어와 이러한 용어가 데이터의 특성과 어떻게 관련되는지를 이해해야 합니다.To best use collation support in SQL ServerSQL Server, you must understand the terms that are defined in this topic, and how they relate to the characteristics of your data.

데이터 정렬 용어 Collation Terms

데이터 정렬 Collation

데이터 정렬은 데이터 집합의 각 문자를 나타내는 비트 패턴을 지정합니다.A collation specifies the bit patterns that represent each character in a data set. 또한 데이터 정렬은 데이터를 정렬하고 비교하는 규칙을 결정합니다.Collations also determine the rules that sort and compare data. SQL ServerSQL Server 는 여러 다른 데이터 정렬을 갖는 개체를 단일 데이터베이스에 저장하도록 지원합니다. supports storing objects that have different collations in a single database. 비유니코드 열의 경우 데이터 정렬 설정은 데이터에 대한 코드 페이지와 나타낼 수 있는 문자를 지정합니다.For non-Unicode columns, the collation setting specifies the code page for the data and which characters can be represented. 유니코드가 아닌 열 간에 데이터를 이동하려면 원본 코드 페이지에서 대상 코드 페이지로 변환해야 합니다.Data that is moved between non-Unicode columns must be converted from the source code page to the destination code page.

데이터 정렬 설정이 각기 다른 데이터베이스의 컨텍스트에서 Transact-SQLTransact-SQL 문을 실행하면 그 결과가 달라질 수 있습니다. Transact-SQLTransact-SQL statement results can vary when the statement is run in the context of different databases that have different collation settings. 가능한 경우 조직에서 표준화된 데이터 정렬을 사용하세요.If it is possible, use a standardized collation for your organization. 그러면 모든 문자나 유니코드 식에서 명시적으로 데이터 정렬을 지정할 필요가 없습니다.This way, you do not have to explicitly specify the collation in every character or Unicode expression. 데이터 정렬 및 코드 페이지 설정이 다른 개체를 사용해야 할 경우 선행 정렬 우선 순위 규칙을 고려하도록 쿼리를 코딩하세요.If you must work with objects that have different collation and code page settings, code your queries to consider the rules of collation precedence. 자세한 내용은 선행 정렬 우선 순위(Transact-SQL)를 참조하세요.For more information, see Collation Precedence (Transact-SQL).

데이터 정렬 관련 옵션에는 대/소문자 구분, 악센트 구분, 일본어 가나 구분, 전자/반자 구분, 변형 선택기 구분이 있습니다.The options associated with a collation are case sensitivity, accent sensitivity, Kana-sensitivity, width sensitivity, variation-selector-sensitivity. 이러한 옵션은 데이터 정렬 이름에 추가하여 지정됩니다.These options are specified by appending them to the collation name. 예를 들어 이 Japanese_Bushu_Kakusu_100_CS_AS_KS_WS 데이터 정렬은 대/소문자, 악센트, 일본어 가나 및 전자/반자를 구분합니다.For example, this collation Japanese_Bushu_Kakusu_100_CS_AS_KS_WS is case-sensitive, accent-sensitive, Kana-sensitive, and width-sensitive. 또 다른 예로 이 Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS 데이터 정렬은 대/소문자 구분 및 악센트를 구분하지 않고 일본어 가나, 전자/반자 및 변형 선택기를 구분합니다.As another example, this collation Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS is case-insensitive, accent-insensitive, Kana-sensitive, width-sensitive, and variation-selector-sensitive. 다음 표에서는 이러한 다양한 옵션과 연결된 동작에 대해 설명합니다.The following table describes the behavior associated with these various options.

옵션Option 설명Description
대/소문자 구분(_CS)Case-sensitive (_CS) 대/소문자를 구분합니다.Distinguishes between uppercase and lowercase letters. 이 정렬 순서를 선택하면 소문자가 대문자보다 먼저 정렬됩니다.If selected, lowercase letters sort ahead of their uppercase versions. 이 옵션을 선택하지 않으면 데이터 정렬에서 대소문자를 구분하지 않습니다.If this option is not selected, the collation is case-insensitive. 즉, SQL Server에서 정렬할 때 대문자와 소문자를 동일한 것으로 간주합니다.That is, SQL Server considers the uppercase and lowercase versions of letters to be identical for sorting purposes. _CI를 지정하여 대/소문자를 구분하지 않도록 명시적으로 선택할 수 있습니다.You can explicitly select case insensitivity by specifying _CI.
악센트 구분(_AS)Accent-sensitive (_AS) 악센트가 있는 문자와 악센트가 없는 문자를 구분합니다.Distinguishes between accented and unaccented characters. 예를 들어 'a'와 'ấ'는 같지 않습니다.For example, 'a' is not equal to 'ấ'. 이 옵션을 선택하지 않으면 데이터 정렬에서 악센트를 구분하지 않습니다.If this option is not selected, the collation is accent-insensitive. 즉, SQL Server에서 정렬할 때 악센트가 있는 문자와 악센트가 없는 문자를 동일한 것으로 간주합니다.That is, SQL Server considers the accented and unaccented versions of letters to be identical for sorting purposes. _AI를 지정하여 악센트를 구분하지 않도록 명시적으로 선택할 수 있습니다.You can explicitly select accent insensitivity by specifying _AI.
일본어 가나 구분(_KS)Kana-sensitive (_KS) 일본어 가나 문자의 두 가지 유형인 히라가나와 가타가나를 구분합니다.Distinguishes between the two types of Japanese kana characters: Hiragana and Katakana. 이 옵션을 선택하지 않으면 데이터 정렬에서 가나를 구분하지 않습니다.If this option is not selected, the collation is Kana-insensitive. 즉, SQL Server에서 정렬할 때 히라가나 문자와 가타카나 문자를 동일한 것으로 간주합니다.That is, SQL Server considers Hiragana and Katakana characters to be equal for sorting purposes. 일본어 가나를 구분하지 않도록 지정하는 유일한 방법은 이 옵션을 생략하는 것입니다.Omitting this option is the only method of specifying Kana-insensitivity.
전자/반자 구분(_WS)Width-sensitive (_WS) 전자와 반자 문자를 구분합니다.Distinguishes between full-width and half-width characters. 이 옵션을 선택하지 않으면 SQL Server에서는 정렬할 때 같은 문자의 전자 표시와 반자 표시를 동일한 문자로 간주합니다.If this option is not selected, SQL Server considers the full-width and half-width representation of the same character to be identical for sorting purposes. 전자/반자를 구분하지 않도록 지정하는 유일한 방법은 이 옵션을 생략하는 것입니다.Omitting this option is the only method of specifying width-insensitivity.
변형 선택기 구분(_VSS)Variation-selector-sensitive (_VSS) SQL Server vNextSQL Server vNext에서 처음 도입된 일본어 데이터 정렬 Japanese_Bushu_Kakusu_140 및 Japanese_XJIS_140에서 다양한 표의 변형 선택기를 구분합니다.Distinguishes between various ideographic variation selectors in Japanese collations Japanese_Bushu_Kakusu_140 and Japanese_XJIS_140 first introduced in SQL Server vNextSQL Server vNext. 변형 시퀀스는 기본 문자와 추가 변형 선택기로 구성됩니다.A variation sequence consists of a base character plus an additional variation selector. 이 _VSS 옵션을 선택하지 않으면 데이터 정렬이 변형 선택기를 구분하지 않고 변형 선택기가 비교에서 고려되지 않습니다.If this _VSS option is not selected, the collation is variation selector insensitive, and the variation selector is not considered in the comparison. 즉, SQL Server는 정렬할 때 다른 변형 선택기를 사용하여 동일한 기본 문자 위에 구축된 문자를 동일한 것으로 간주합니다.That is, SQL Server considers characters built upon the same base character with differing variation selectors to be identical for sorting purposes. Unicode Ideographic Variation Database(유니코드 표의 변형 데이터베이스)도 참조하세요.See also Unicode Ideographic Variation Database.

변형 선택기 구분(_VSS) 데이터 정렬은 전체 텍스트 검색 인덱스에서 지원되지 않습니다.Variation selector sensitive (_VSS) collations are not supported in Full-text search indexes. 전체 텍스트 검색 인덱스는 악센트 구분(_AS), 일본어 가나 구분(_KS) 및 전자/반자 구분(_WS) 옵션만 지원합니다.Full-text search indexes support only Accent-Sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options. SQL Server XML 및 CLR 엔진은 (_VSS) 변형 선택기를 지원하지 않습니다.SQL Server XML and CLR engines do not support (_VSS) Variation selectors.

SQL ServerSQL Server 에서 지원하는 데이터 정렬 집합은 다음과 같습니다. supports the following collation sets:

Windows 데이터 정렬Windows collations
Windows 데이터 정렬은 관련 Windows 시스템 로캘을 기반으로 문자 데이터 저장 규칙을 정의합니다.Windows collations define rules for storing character data that are based on an associated Windows system locale. Windows 데이터 정렬의 경우 유니코드 데이터를 비교할 때와 동일한 알고리즘을 사용하여 비유니코드 데이터도 비교합니다.For a Windows collation, comparison of non-Unicode data is implemented by using the same algorithm as Unicode data. 기본 Windows 데이터 정렬 규칙은 사전 정렬이 적용될 때 사용되는 알파벳이나 언어를 지정하고 유니코드가 아닌 문자 데이터를 저장하는 데 사용되는 코드 페이지를 지정합니다.The base Windows collation rules specify which alphabet or language is used when dictionary sorting is applied, and the code page that is used to store non-Unicode character data. 유니코드 정렬과 비유니코드 정렬은 모두 특정 버전의 Windows에서 수행되는 문자열 비교와 호환됩니다.Both Unicode and non-Unicode sorting are compatible with string comparisons in a particular version of Windows. 따라서 SQL ServerSQL Server 내의 데이터 형식에서 일관성이 유지되고 개발자는 응용 프로그램에서 SQL ServerSQL Server에 사용되는 것과 동일한 규칙을 사용하여 문자열을 정렬할 수 있습니다.This provides consistency across data types within SQL ServerSQL Server, and it also lets developers sort strings in their applications by using the same rules that are used by SQL ServerSQL Server. 자세한 내용은 Windows 데이터 정렬 이름(Transact-SQL)을 참조하세요.For more information, see Windows Collation Name (Transact-SQL).

이진 데이터 정렬Binary collations
이진 데이터 정렬은 로캘 및 데이터 형식으로 정의된 코딩 값 시퀀스에 따라 데이터를 정렬합니다.Binary collations sort data based on the sequence of coded values that are defined by the locale and data type. 이때 대/소문자가 구분됩니다.They are case sensitive. SQL ServerSQL Server의 이진 데이터 정렬은 사용되는 로캘과 ANSI 코드 페이지를 정의하며A binary collation in SQL ServerSQL Server defines the locale and the ANSI code page that is used. 이진 정렬 순서를 적용합니다.This enforces a binary sort order. 이진 데이터 정렬은 비교적 간단하므로 응용 프로그램의 성능을 향상시키는 데 도움이 됩니다.Because they are relatively simple, binary collations help improve application performance. 비유니코드 데이터 형식의 경우 데이터 비교는 ANSI 코드 페이지에 정의된 코드 포인트를 기준으로 수행됩니다.For non-Unicode data types, data comparisons are based on the code points that are defined in the ANSI code page. 유니코드 데이터 형식의 경우 데이터 비교는 유니코드 코드 포인트를 기준으로 수행됩니다.For Unicode data types, data comparisons are based on the Unicode code points. 유니코드 데이터 형식에서의 이진 데이터 정렬의 경우 데이터 정렬 시 로캘은 고려되지 않습니다.For binary collations on Unicode data types, the locale is not considered in data sorts. 예를 들어 Latin_1_General_BIN과 Japanese_BIN은 유니코드 데이터에서 사용할 때 동일한 정렬 결과를 생성합니다.For example, Latin_1_General_BIN and Japanese_BIN yield identical sorting results when they are used on Unicode data.

SQL ServerSQL Server에는 두 가지 유형의 이진 데이터 정렬, 즉 이전 BIN 데이터 정렬과 최신 BIN2 데이터 정렬이 있습니다.There are two types of binary collations in SQL ServerSQL Server; the older BIN collations and the newer BIN2 collations. BIN2 데이터 정렬에서 모든 문자는 코드 포인트에 따라 정렬됩니다.In a BIN2 collation all characters are sorted according to their code points. BIN 데이터 정렬에서 첫 번째 문자만 코드 포인트에 따라 정렬되며 나머지 문자는 바이트 값에 따라 정렬됩니다.In a BIN collation only the first character is sorted according to the code point, and remaining characters are sorted according to their byte values. Intel 플랫폼은 little endian 아키텍처이므로, 유니코드 문자는 항상 바이트 스왑 상태로 저장됩니다.(Because the Intel platform is a little endian architecture, Unicode code characters are always stored byte-swapped.)

SQL Server 데이터 정렬SQL Server collations
SQL ServerSQL Server 데이터 정렬(SQL_)은 이전 버전의 SQL ServerSQL Server와 정렬 순서가 호환됩니다. collations (SQL_) provide sort order compatibility with earlier versions of SQL ServerSQL Server. 비유니코드에 대한 사전 정렬 규칙은 Windows 운영 체제에서 제공하는 정렬 루틴과 호환되지 않지만The dictionary sorting rules for non-Unicode data are incompatible with any sorting routine that is provided by Windows operating systems. 유니코드 데이터의 정렬은 특정 버전의 Windows 정렬 규칙과 호환됩니다.However, sorting Unicode data is compatible with a particular version of Windows sorting rules. SQL ServerSQL Server 데이터 정렬은 비유니코드 데이터와 유니코드 데이터에 대해 다른 비교 규칙을 사용하므로 기본 데이터 형식에 따라 동일한 데이터에 대한 비교 결과가 달라집니다.Because SQL ServerSQL Server collations use different comparison rules for non-Unicode and Unicode data, you see different results for comparisons of the same data, depending on the underlying data type. 자세한 내용은 SQL Server 데이터 정렬 이름(Transact-SQL)을 참조하세요.For more information, see SQL Server Collation Name (Transact-SQL).

참고

SQL ServerSQL Server의 영어 인스턴스를 업그레이드할 때 기존 SQL ServerSQL Server 인스턴스와의 호환성을 위해 SQL ServerSQL Server 데이터 정렬(SQL_)을 지정할 수 있습니다.When you upgrade an English-language instance of SQL ServerSQL Server, SQL ServerSQL Server collations (SQL_) can be specified for compatibility with existing instances of SQL ServerSQL Server. SQL ServerSQL Server 인스턴스의 기본 데이터 정렬은 설치 중에 정의되므로 다음 사항에 해당하는 경우 데이터 정렬 설정을 신중하게 지정해야 합니다.Because the default collation for an instance of SQL ServerSQL Server is defined during setup, make sure that you specify collation settings carefully when the following are true:

  • 응용 프로그램 코드가 이전 SQL ServerSQL Server 데이터 정렬의 동작에 의존할 경우Your application code depends on the behavior of previous SQL ServerSQL Server collations.
    • 여러 언어를 반영하는 문자 데이터를 저장해야 하는 경우You must store character data that reflects multiple languages.

다음 수준의 SQL ServerSQL Server인스턴스에서 데이터 정렬을 설정할 수 있습니다.Setting collations are supported at the following levels of an instance of SQL ServerSQL Server:

서버 수준 데이터 정렬Server-level collations
기본 서버 데이터 정렬은 SQL ServerSQL Server 설치 중에 설정되며 시스템 데이터베이스 및 모든 사용자 데이터베이스의 기본 데이터 정렬이 될 수도 있습니다.The default server collation is set during SQL ServerSQL Server setup, and also becomes the default collation of the system databases and all user databases. 유니코드 전용 데이터 정렬은 서버 수준 데이터 정렬로 지원되지 않으므로 SQL ServerSQL Server 설치 중에 선택할 수 없습니다.Note that Unicode-only collations cannot be selected during SQL ServerSQL Server setup because they are not supported as server-level collations.

서버에 데이터 정렬을 할당한 후에는 데이터 정렬을 변경할 수 없습니다. 단, 모든 데이터베이스 개체와 데이터를 내보내고 master 데이터베이스를 다시 작성한 다음 모든 데이터베이스 개체와 데이터를 다시 가져오는 경우는 예외입니다.After a collation has been assigned to the server, you cannot change the collation except by exporting all database objects and data, rebuilding the master database, and importing all database objects and data. SQL ServerSQL Server인스턴스의 기본 데이터 정렬을 변경하는 대신 새 데이터베이스 또는 데이터베이스 열을 만들 때 원하는 데이터 정렬을 지정할 수 있습니다.Instead of changing the default collation of an instance of SQL ServerSQL Server, you can specify the desired collation at the time that you create a new database or database column.

데이터베이스 수준 데이터 정렬Database-level collations
데이터베이스를 만들거나 수정할 때 CREATE DATABASE 또는 ALTER DATABASE 문의 COLLATE 절을 사용하여 기본 데이터베이스 데이터 정렬을 지정할 수 있습니다.When a database is created or modified, you can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default database collation. 데이터 정렬을 지정하지 않으면 데이터베이스에 서버 데이터 정렬이 할당됩니다.If no collation is specified, the database is assigned the server collation.

서버에 대한 데이터 정렬을 변경하는 경우를 제외하고는 시스템 데이터베이스의 데이터 정렬을 변경할 수 없습니다.You cannot change the collation of system databases except by changing the collation for the server.

데이터베이스 데이터 정렬은 데이터베이스의 모든 메타데이터에 사용되며 데이터베이스에 사용되는 모든 문자열 열, 임시 개체, 변수 이름 및 기타 모든 문자열의 기본값이 됩니다.The database collation is used for all metadata in the database, and is the default for all string columns, temporary objects, variable names, and any other strings used in the database. 사용자 데이터베이스의 데이터 정렬을 변경할 경우 데이터베이스 액세스 임시 테이블에서 쿼리할 때 데이터 정렬 충돌이 발생할 수 있습니다.When you change the collation of a user database, there can be collation conflicts when queries in the database access temporary tables. 임시 테이블은 항상 tempdb 시스템 데이터베이스에 저장되므로, 인스턴스에 대한 데이터 정렬을 사용합니다.Temporary tables are always stored in the tempdb system database, which uses the collation for the instance. 사용자 데이터베이스와 tempdb 간의 문자 데이터를 비교하는 쿼리를 실행할 경우 문자 데이터를 평가할 때 데이터 정렬이 충돌하면 쿼리가 실패할 수 있습니다.Queries that compare character data between the user database and tempdb may fail if the collations cause a conflict in evaluating the character data. 쿼리에 COLLATE 절을 지정하여 이 문제를 해결할 수 있습니다.You can resolve this by specifying the COLLATE clause in the query. 자세한 내용은 COLLATE(Transact-SQL)를 참조하세요.For more information, see COLLATE (Transact-SQL).

열 수준 데이터 정렬Column-level collations
테이블을 만들거나 변경할 때 COLLATE 절을 사용하여 각 문자열 열에 대한 데이터 정렬을 지정할 수 있습니다.When you create or alter a table, you can specify collations for each character-string column by using the COLLATE clause. 데이터 정렬을 지정하지 않으면 열에 데이터베이스의 기본 데이터 정렬이 할당됩니다.If no collation is specified, the column is assigned the default collation of the database.

식 수준 데이터 정렬Expression-level collations
식 수준 데이터 정렬은 문이 실행될 때 설정되며 결과 집합이 반환되는 방식에 영향을 줍니다.Expression-level collations are set when a statement is run, and they affect the way a result set is returned. 따라서 ORDER BY 정렬 결과를 특정 로캘과 관련되게 할 수 있습니다.This enables ORDER BY sort results to be locale-specific. 다음과 같이 COLLATE 절을 사용하여 식 수준 데이터 정렬을 구현할 수 있습니다.Use a COLLATE clause such as the following to implement expression-level collations:

SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI;    

로캘 Locale

로캘은 위치나 문화권과 관련된 정보의 모음입니다.A locale is a set of information that is associated with a location or a culture. 여기에는 통용 언어의 이름과 식별자, 언어를 기록하는 데 사용되는 문자 및 문화권별 표기법 등이 포함될 수 있습니다.This can include the name and identifier of the spoken language, the script that is used to write the language, and cultural conventions. 데이터 정렬은 하나 이상의 로캘과 연결될 수 있습니다.Collations can be associated with one or more locales. 자세한 내용은 참조 Microsoft에 의해 할당되는 로캘 ID를 참조하세요.For more information, see Locale IDs Assigned by Microsoft.

Code Page Code Page

코드 페이지는 지정한 스크립트의 각 문자와 연결된 숫자 인덱스 또는 코드 포인트 값을 정렬한 문자 집합입니다.A code page is an ordered set of characters of a given script in which a numeric index, or code point value, is associated with each character. Windows 코드 페이지는 일반적으로 문자 집합 또는 charset이라고 합니다.A Windows code page is typically referred to as a character set or charset. 코드 페이지는 여러 다른 Windows 시스템 로캘에 사용되는 문자 집합과 자판 배열을 지원하는 데 사용됩니다.Code pages are used to provide support for the character sets and keyboard layouts that are used by different Windows system locales.

Sort Order Sort Order

정렬 순서는 데이터 값이 정렬되는 방식을 지정합니다.Sort order specifies how data values are sorted. 이는 데이터 비교의 결과에 영향을 줍니다.This affects the results of data comparison. 데이터는 데이터 정렬을 사용하여 정렬되며 인덱스를 사용하여 데이터 정렬을 최적화할 수 있습니다.Data is sorted by using collations, and it can be optimized by using indexes.

유니코드 지원 Unicode Support

유니코드는 코드 포인트를 문자에 매핑하기 위한 표준입니다.Unicode is a standard for mapping code points to characters. 유니코드는 전 세계 모든 언어의 모든 문자를 지원하기 때문에 각 문자 집합을 처리하는 데 서로 다른 코드 페이지가 필요하지 않습니다.Because it is designed to cover all the characters of all the languages of the world, there is no need for different code pages to handle different sets of characters. 여러 언어를 반영하는 문자 데이터를 저장할 경우에는 유니코드를 지원하지 않는 데이터 형식(char, varchartext) 대신 항상 유니코드 데이터 형식(nchar, nvarcharntext)을 사용하세요.If you store character data that reflects multiple languages, always use Unicode data types (nchar, nvarchar, and ntext) instead of the non-Unicode data types (char, varchar, and text).

비유니코드 데이터 형식에는 여러 가지 제한 사항이 있습니다.Significant limitations are associated with non-Unicode data types. 이는 비유니코드 컴퓨터에서는 단일 코드 페이지만 사용할 수 있기 때문입니다.This is because a non-Unicode computer is limited to use of a single code page. 유니코드를 사용하면 코드 페이지 변환이 별로 필요하지 않으므로 성능이 향상될 수 있습니다.You might experience performance gain by using Unicode because fewer code-page conversions are required. 이러한 경우 유니코드 데이터 정렬이 서버 수준에서 지원되지 않으므로 데이터베이스, 열 또는 식 수준에서 유니코드 데이터 정렬을 개별적으로 선택해야 합니다.Unicode collations must be selected individually at the database, column, or expression level because they are not supported at the server level.

클라이언트가 사용하는 코드 페이지는 운영 체제 설정에 따라 결정됩니다.The code pages that a client uses are determined by the operating system settings. Windows 운영 체제에서 클라이언트 코드 페이지를 설정하려면 제어판의 국가별 설정 을 사용하세요.To set client code pages on the Windows operating system, use Regional Settings in Control Panel.

서버에서 클라이언트로 데이터를 이동할 때는 기존 클라이언트 드라이버에서 서버 데이터 정렬을 인식하지 못할 수 있습니다.When you move data from a server to a client, your server collation might not be recognized by older client drivers. 유니코드 서버에서 비유니코드 클라이언트로 데이터를 이동할 때 이러한 현상이 나타날 수 있습니다.This can occur when you move data from a Unicode server to a non-Unicode client. 클라이언트 운영 체제를 업그레이드하여 기본 시스템 데이터 정렬을 업데이트하는 것이 가장 좋은 방법입니다.Your best option might be to upgrade the client operating system so that the underlying system collations are updated. 클라이언트에 데이터베이스 클라이언트 소프트웨어가 설치되어 있는 경우에는 해당 데이터베이스 클라이언트 소프트웨어에 서비스 업데이트를 적용하는 것도 좋습니다.If the client has database client software installed, you might consider applying a service update to the database client software.

또한 서버의 데이터에 대해 다른 데이터 정렬을 사용할 수도 있습니다.You can also try to use a different collation for the data on the server. 클라이언트의 코드 페이지에 매핑되는 데이터 정렬을 선택하세요.Choose a collation that maps to a code page on the client.

SQL Server 2017SQL Server 2017에서 제공되는 UTF-16 데이터 정렬을 사용하기 위해 보조 문자 _SC 데이터 정렬(Windows 데이터 정렬만) 중 하나를 선택하여 일부 유니코드 문자의 검색 및 정렬 성능을 향상시킬 수 있습니다.To use the UTF-16 collations available in SQL Server 2017SQL Server 2017, you can select one of the supplementary characters _SC collations (Windows collations only) to improve searching and sorting of some Unicode characters.

유니코드 데이터 형식 또는 비유니코드 데이터 형식 사용과 관련된 문제점을 평가하려면 작업 시나리오를 테스트하여 사용자 환경에서 나타나는 성능 차이를 측정하세요.To evaluate issues that are related to using Unicode or non-Unicode data types, test your scenario to measure performance differences in your environment. 조직 전반의 시스템에 사용되는 데이터 정렬을 표준화하고 유니코드 서버 및 클라이언트를 배포하는 것이 좋습니다.It is a good practice to standardize the collation that is used on systems across your organization, and deploy Unicode servers and clients wherever possible.

대부분의 경우 SQL ServerSQL Server 는 다른 서버나 클라이언트와 상호 작용하며 조직에서는 응용 프로그램과 서버 인스턴스 간에 여러 데이터 액세스 표준을 사용할 수 있습니다.In many situations, SQL ServerSQL Server interacts with other servers or clients, and your organization might use multiple data access standards between applications and server instances. SQL ServerSQL Server 클라이언트는 다음의 두 가지 주요 유형 중 하나에 해당됩니다. clients are one of two main types:

  • OLE DB 및 ODBC(Open Database Connectivity) 버전 3.7 이상을 사용하는유니코드 클라이언트 Unicode clients that use OLE DB and Open Database Connectivity (ODBC) version 3.7 or a later version.

  • DB-Library 및 ODBC 버전 3.6 이하를 사용하는유니코드를 지원하지 않는 클라이언트 Non-Unicode clients that use DB-Library and ODBC version 3.6 or an earlier version.

    다음 표에서는 유니코드 서버 및 비유니코드 서버의 다양한 조합과 함께 다국어 데이터 사용에 대한 정보를 제공합니다.The following table provides information about using multilingual data with various combinations of Unicode and non-Unicode servers.

ServerServer 클라이언트Client 이점 또는 제한 사항Benefits or Limitations
유니코드Unicode 유니코드Unicode 유니코드 데이터는 시스템 전체에서 사용되므로 이 시나리오는 검색한 데이터가 손상되지 않는 등 최상의 성능을 제공합니다.Because Unicode data is used throughout the system, this scenario provides the best performance and protection from corruption of retrieved data. ADO(ActiveX Data Objects), OLE DB 및 ODBC 버전 3.7 이상이 여기에 해당됩니다.This is the situation with ActiveX Data Objects (ADO), OLE DB, and ODBC version 3.7 or a later version.
유니코드Unicode 비유니코드Non-Unicode 이 시나리오에서, 특히 새로운 운영 체제를 실행하는 서버와 이전 버전의 운영 체제에 이전 버전의 SQL ServerSQL Server를 실행하는 클라이언트 간의 연결에서는 데이터를 클라이언트 컴퓨터로 이동할 때 제한 사항 또는 오류가 발생할 수 있습니다.In this scenario, especially with connections between a server that is running a newer operating system and a client that is running an older version of SQL ServerSQL Server, or on an older operating system, there can be limitations or errors when you move data to a client computer. 서버의 유니코드 데이터는 데이터 변환을 위해 비유니코드 클라이언트의 해당 코드 페이지에 매핑을 시도합니다.Unicode data on the server tries to map to a corresponding code page on the non-Unicode client to convert the data.
비유니코드Non-Unicode 유니코드Unicode 다국어 데이터를 사용할 경우 이상적인 구성이 아닙니다.This is not an ideal configuration for using multilingual data. 유니코드 데이터를 비유니코드 서버에 쓸 수 없습니다.You cannot write Unicode data to the non-Unicode server. 서버의 코드 페이지를 벗어나는 서버로 데이터를 보낼 때 문제가 발생할 수 있습니다.Problems are likely to occur when data is sent to servers that are outside the server's code page.
비유니코드Non-Unicode 비유니코드Non-Unicode 다국어 데이터를 사용할 때 가장 제한이 많은 시나리오입니다.This is a very limiting scenario for multilingual data. 단일 코드 페이지만 사용할 수 있습니다.You can use only a single code page.

보조 문자 Supplementary Characters

SQL ServerSQL Server 는 유니코드 데이터를 저장하기 위해 ncharnvarchar 같은 데이터 형식을 제공합니다. provides data types such as nchar and nvarchar to store Unicode data. 이러한 데이터 형식은 텍스트를 UTF-16이라고 하는 형식으로 인코딩합니다.These data types encode text in a format called UTF-16. 유니코드 컨소시엄에서는 각 문자에 0x0000 ~ 0x10FFFF 범위의 값인 고유한 코드 포인트를 할당합니다.The Unicode Consortium allocates each character a unique codepoint, which is a value in the range 0x0000 to 0x10FFFF. 가장 자주 사용되는 문자에는 메모리 및 디스크에서 16비트 단어로 나타날 수 있는 코드 포인트 값이 할당되지만 코드 포인트 값이 0xFFFF보다 큰 문자에는 두 개의 연속적인 16비트 단어가 필요합니다.The most frequently used characters have codepoint values that fit into a 16-bit word in memory and on disk, but characters with codepoint values larger than 0xFFFF require two consecutive 16-bit words. 이러한 문자를 보조 문자라고 하며 두 개의 연속적인 16비트 단어는 서로게이트 쌍이라고 합니다.These characters are called supplementary characters, and the two consecutive 16-bit words are called surrogate pairs.

보조 문자를 사용하는 경우If you use supplementary characters:

  • 데이터 정렬 버전 90 이상에서 정렬 및 비교 연산에 보조 문자를 사용할 수 있습니다.Supplementary characters can be used in ordering and comparison operations in collation versions 90 or greater.

  • _100 수준 데이터 정렬은 모두 보조 문자를 사용한 언어적 정렬을 지원합니다.All _100 level collations support linguistic sorting with supplementary characters.

  • 데이터베이스 개체 이름 같은 메타데이터에는 보조 문자를 사용할 수 없습니다.Supplementary characters are not supported for use in metadata, such as in names of database objects.

  • SQL Server 2012SQL Server 2012에서 도입된 일련의 새 SC(보조 문자) 데이터 정렬을 nchar, nvarcharsql_variant데이터 형식에 사용할 수 있습니다.Introduced in SQL Server 2012SQL Server 2012, a new family of supplementary character (SC) collations can be used with the data types nchar, nvarchar, and sql_variant. 예를 들어 Latin1_General_100_CI_AS_SC또는 Japanese_Bushu_Kakusu_100_CI_AS_SC(일본어 데이터 정렬을 사용하는 경우)를 사용합니다.For example: Latin1_General_100_CI_AS_SC, or if using a Japanese collation, Japanese_Bushu_Kakusu_100_CI_AS_SC.

    참고

    보충 문자(_SC)를 사용하는 데이터베이스는 SQL ServerSQL Server 복제에 사용할 수 없습니다.Databases that use collations with supplementary characters (_SC), cannot be enabled for SQL ServerSQL Server Replication. 이는 복제를 위해 생성되는 시스템 테이블 및 저장 프로시저 중 일부가 보충 문자를 지원하지 않는 ntext 데이터 형식을 사용하기 때문입니다.This is because some of the system tables and stored procedures that are created for replication, use the legacy ntext data type, which does not support supplementary characters.

    SC 플래그는 다음에 적용할 수 있습니다.The SC flag can be applied to:

    • 버전 90 Windows 데이터 정렬Version 90 Windows collations

    • 버전 100 Windows 데이터 정렬Version 100 Windows collations

      SC 플래그는 다음에 적용할 수 없습니다.The SC flag cannot be applied to:

    • 버전 80 버전이 지정되지 않은 Windows 데이터 정렬Version 80 non-versioned Windows collations

    • BIN 또는 BIN2 이진 데이터 정렬The BIN or BIN2 binary collations

    • SQL* 데이터 정렬The SQL* collations

    다음 표에서는 보조 문자를 SC 데이터 정렬과 함께 사용할 경우와 그렇지 않을 때 일부 문자열 함수 및 문자열 연산자의 동작을 비교합니다.The following table compares the behavior of some string functions and string operators when they use supplementary characters with and without a SC collation.

문자열 함수 또는 연산자String Function or Operator SC 데이터 정렬 사용With an SC Collation SC 데이터 정렬 사용 안 함Without an SC Collation
CHARINDEXCHARINDEX

LENLEN

PATINDEXPATINDEX
UTF-16 서로게이트 쌍이 단일 코드 포인트로 계산됩니다.The UTF-16 surrogate pair is counted as a single codepoint. UTF-16 서로게이트 쌍이 두 개의 코드 포인트로 계산됩니다.The UTF-16 surrogate pair is counted as two codepoints.
LEFTLEFT

REPLACEREPLACE

REVERSEREVERSE

RIGHTRIGHT

SUBSTRINGSUBSTRING

STUFFSTUFF
함수가 각 서로게이트 쌍을 단일 코드 포인트로 처리하며 올바르게 작동합니다.These functions treat each surrogate pair as a single codepoint and work as expected. 함수가 서로게이트 쌍을 분할하여 예기치 않은 결과가 발생할 수 있습니다.These functions may split any surrogate pairs and lead to unexpected results.
NCHARNCHAR 0 ~ 0x10FFFF 범위의 지정된 유니코드 코드 포인트 값에 해당하는 문자를 반환합니다.Returns the character corresponding to the specified Unicode codepoint value in the range 0 to 0x10FFFF. 지정된 값이 0 ~ 0xFFFF 범위에 있을 경우 하나의 문자가 반환됩니다.If the value specified lies in the range 0 through 0xFFFF, one character is returned. 값이 더 높을 경우 해당 서로게이트가 반환됩니다.For higher values, the corresponding surrogate is returned. 0xFFFF보다 큰 값은 해당 서로게이트 대신 NULL을 반환합니다.A value higher than 0xFFFF returns NULL instead of the corresponding surrogate.
UNICODEUNICODE 0 ~ 0x10FFFF 범위의 UTF-16 코드 포인트를 반환합니다.Returns a UTF-16 codepoint in the range 0 through 0x10FFFF. 0 ~ 0xFFFF 범위의 UCS-2 코드 포인트를 반환합니다.Returns a UCS-2 codepoint in the range 0 through 0xFFFF.
와일드카드 - 문자 하나와 일치Match One Character Wildcard

와일드카드 - 일치하지 않는 문자Wildcard - Character(s) Not to Match
모든 와일드카드 연산에 보조 문자를 사용할 수 있습니다.Supplementary characters are supported for all wildcard operations. 이러한 와일드카드 연산에 보조 문자를 사용할 수 없습니다.Supplementary characters are not supported for these wildcard operations. 다른 와일드카드 연산자는 사용할 수 있습니다.Other wildcard operators are supported.

GB18030 지원 GB18030 Support

GB18030은 중국에서 사용하는 별개의 중국어 인코딩 표준입니다.GB18030 is a separate standard used in the People's Republic of China for encoding Chinese characters. GB18030에서 문자 길이는 1바이트, 2바이트 또는 4바이트일 수 있습니다.In GB18030, characters can be 1, 2, or 4 bytes in length. SQL ServerSQL Server 에서는 서버가 클라이언트 쪽 응용 프로그램으로부터 GB18030으로 인코딩된 문자를 받을 때 해당 문자를 인식하고 유니코드 문자로 기본 변환 및 저장하는 방식으로 GB18030 문자를 지원합니다. provides support for GB18030-encoded characters by recognizing them when they enter the server from a client-side application and converting and storing them natively as Unicode characters. 이렇게 변환된 문자는 서버에 저장된 후 모든 후속 작업에서 유니코드 문자로 처리됩니다.After they are stored in the server, they are treated as Unicode characters in any subsequent operations. 모든 중국어 데이터 정렬(가급적 최신 100 버전)을 사용할 수 있습니다.You can use any Chinese collation, preferably the latest 100 version. 모든 _100 수준 데이터 정렬은 GB18030 문자를 사용한 언어적 정렬을 지원합니다.All _100 level collations support linguistic sorting with GB18030 characters. 데이터에 보조 문자(서로게이트 쌍)가 포함되어 있는 경우 SQL Server 2017SQL Server 2017 에서 제공되는 SC 데이터 정렬을 사용하여 검색 및 정렬 성능을 향상시킬 수 있습니다.If the data includes supplementary characters (surrogate pairs), you can use the SC collations available in SQL Server 2017SQL Server 2017 to improve searching and sorting.

복합 스크립트 지원 Complex Script Support

SQL ServerSQL Server 에서는 복합 스크립트를 입력, 저장, 변경 및 표시할 수 있습니다. can support inputting, storing, changing, and displaying complex scripts. 복합 스크립트에는 다음 형식이 포함됩니다.Complex scripts include the following types:

  • 아랍어 텍스트와 영어 텍스트의 조합과 같은 오른쪽에서 왼쪽으로 쓰는 텍스트와 왼쪽에서 오른쪽으로 쓰는 텍스트의 조합을 포함하는 양방향 텍스트Scripts that include the combination of both right-to-left and left-to-right text, such as a combination of Arabic and English text.
  • 아랍어, 인도어, 태국어 문자와 같이 위치에 따라 문자 모양이 바뀌거나 다른 문자와 함께 사용되면 문자 모양이 바뀌는 양방향 텍스트Scripts whose characters change shape depending on their position, or when combined with other characters, such as Arabic, Indic, and Thai characters.
  • 태국어와 같이 단어 사이를 구분하는 공백이 없어 단어 인식을 위해 내부 사전이 필요한 언어Languages such as Thai that require internal dictionaries to recognize words because there are no breaks between them.

SQL ServerSQL Server 와 상호 작용하는 데이터베이스 응용 프로그램은 복합 스크립트를 지원하는 컨트롤을 사용해야 합니다.Database applications that interact with SQL ServerSQL Server must use controls that support complex scripts. 관리 코드로 생성되는 표준 Windows 폼 컨트롤에는 복합 스크립트 기능이 설정되어 있습니다.Standard Windows form controls that are created in managed code are complex script-enabled.

일본어 데이터 정렬이 SQL Server vNextSQL Server vNext Japanese Collations added in SQL Server vNextSQL Server vNext

SQL Server vNextSQL Server vNext부터 다양한 옵션(_CS, _AS, _KS, _WS, _VSS 등) 순열을 사용하여 새 일본어 데이터 정렬 패밀리 두 개가 지원됩니다.Starting in SQL Server vNextSQL Server vNext, two new Japanese collation families are supported, with the permutations of various options (_CS, _AS, _KS, _WS, _VSS, etc.).

이러한 데이터 정렬은 나열하기 위해 SQL Server 데이터베이스 엔진을 쿼리할 수 있습니다.To list these collations, you may query the SQL Server Database Engine:

SELECT Name, Description FROM fn_helpcollations()  
WHERE Name LIKE 'Japanese_Bushu_Kakusu_140%' OR Name LIKE 'Japanese_XJIS_140%'

이러한 데이터 정렬은 데이터베이스 엔진 인덱스, 메모리 액세스에 최적화된 테이블, columnstore 인덱스 및 고유하게 컴파일된 모듈에서 지원됩니다.These collations are supported in Database Engine indexes, memory-optimized tables, columnstore indexes, and natively compiled modules.

태스크Task 항목Topic
SQL Server 인스턴스의 데이터 정렬을 설정하거나 변경하는 방법에 대해 설명합니다.Describes how to set or change the collation of the instance of SQL Server. 서버 데이터 정렬 설정 또는 변경Set or Change the Server Collation
사용자 데이터베이스의 데이터 정렬을 설정하거나 변경하는 방법에 대해 설명합니다.Describes how to set or change the collation of a user database. 데이터베이스 데이터 정렬 설정 또는 변경Set or Change the Database Collation
데이터베이스 열의 데이터 정렬을 설정하거나 변경하는 방법에 대해 설명합니다.Describes how to set or change the collation of a column in the database. 열 데이터 정렬 설정 또는 변경Set or Change the Column Collation
서버, 데이터베이스 또는 열 수준에서 데이터 정렬 정보를 반환하는 방법에 대해 설명합니다.Describes how to return collation information at the server, database, or column level. 데이터 정렬 정보 보기View Collation Information
특정 언어에서 다른 언어로 이식하거나 여러 언어를 더욱 쉽게 지원하도록 Transact-SQL 문을 작성하는 방법에 대해 설명합니다.Describes how to write Transact-SQL statements that are more portable from one language to another, or support multiple languages more easily. 국가별 Transact-SQL 문 작성Write International Transact-SQL Statements
날짜, 시간 및 통화 데이터가 사용 및 표시되는 방식에 대한 기본 설정과 오류 메시지 언어를 변경하는 방법에 대해 설명합니다.Describes how to change the language of error messages and preferences for how date, time, and currency data are used and displayed. 세션 언어 설정Set a Session Language

SQL Server Best Practices Collation ChangeSQL Server Best Practices Collation Change

"SQL Server Best Practices Migration to Unicode""SQL Server Best Practices Migration to Unicode"

유니코드 컨소시엄 웹 사이트Unicode Consortium Web site

관련 항목:See Also

포함된 데이터베이스 데이터 정렬 Contained Database Collations
전체 텍스트 인덱스 생성 시 언어 선택 Choose a Language When Creating a Full-Text Index
sys.fn_helpcollations(Transact-SQL)sys.fn_helpcollations (Transact-SQL)