다음을 통해 공유


클라이언트/서버 코드 페이지 간 데이터 변환 관리

이 항목에서는 데이터베이스에서 유니코드 데이터 형식을 사용하여 문자 데이터를 저장하지 않고 해당 데이터와 상호 작용하는 클라이언트측 응용 프로그램에서도 유니코드를 인식하지 못할 경우 문자 데이터의 무결성을 보존하는 방법에 대해 설명합니다. 이와 같은 경우에는 데이터 저장소의 코드 페이지와 클라이언트측 응용 프로그램의 코드 페이지가 동일해야 합니다. 두 코드 페이지가 서로 다르면 클라이언트와 서버 간에 데이터가 변환되면서 일부 문자가 유실될 수 있습니다.

SQL Server ODBC 드라이버의 AutoTranslate 기능을 비활성화하여 서버와 다른 코드 페이지에 의해 정의되는 데이터를 삽입하는 것은 지원되지 않습니다. AutoTranslate를 비활성화하더라도 SQL 언어 이벤트에 대해 코드 페이지 변환이 수행됩니다. 따라서 클라이언트와 데이터베이스의 코드 페이지가 일치하지 않는 경우에는 일반적으로 서버로 전송되거나 서버로부터 전송된 모든 비유니코드 문자열에 코드 페이지 변환이 수행됩니다.

가능하면 이러한 상황이 발생하지 않도록 해야 합니다. 특정 코드 페이지를 사용하는 서버의 경우 동일한 코드 페이지를 사용하는 클라이언트와만 통신하는 것이 가장 좋습니다. 또 다른 차선책은 거의 동일한 문자 집합을 가지고 있는 다른 코드 페이지를 사용하는 것입니다. 예를 들어 코드 페이지 1252(라틴어1)와 코드 페이지 850(다국 라틴 문자 1)은 거의 동일한 문자 집합을 저장할 수 있으므로 두 코드 페이지 간에 변환이 일어나더라도 대부분의 문자가 유실되지 않습니다.

다른 코드 페이지를 사용하는 클라이언트와 통신해야 하는 경우에는 유니코드 열에 데이터를 저장하는 방법을 사용할 수 있습니다. 위의 방법이 모두 적절하지 않은 경우에는 binary, varbinary 또는 varbinary(max) 데이터 형식을 사용하여 이진 열에 데이터를 저장할 수 있습니다. 그러나 이진 데이터는 이진 순서로만 정렬 및 비교할 수 있으므로 문자 데이터보다 융통성이 떨어집니다.