문자 데이터의 자동 변환

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

문자 데이터(예: 문자, varchar 또는 텍스트 데이터 형식을 사용하여 SQL Server에 저장된 데이터 또는 SQL_C_CHAR 사용하여 선언된 ANSI 문자 변수)는 제한된 수의 문자만 나타낼 수 있습니다. 문자당 1 바이트를 사용하여 저장된 문자 데이터는 256자만 나타낼 수 있습니다. SQL_C_CHAR 변수에 저장된 값은 클라이언트 컴퓨터의 ACP(ANSI 코드 페이지)를 사용하여 해석됩니다. 서버의 char, varchar 또는 텍스트 데이터 형식을 사용하여 저장된 값은 서버의 ACP를 사용하여 평가됩니다.

서버와 클라이언트에 모두 동일한 ACP가 있는 경우 SQL_C_CHAR, char, varchar 또는 텍스트 개체에 저장된 값을 해석하는 데 아무런 문제가 없습니다. 서버와 클라이언트에 다른 ADP가 있는 경우 클라이언트의 SQL_C_CHAR 데이터가 char, varchar 또는 텍스트 열, 변수 또는 매개 변수에 사용되는 경우 서버에서 다른 문자로 해석될 수 있습니다. 예를 들어 0xA5 값을 포함하는 문자 바이트는 코드 페이지 437을 사용하여 컴퓨터에서 문자 Ñ로 해석되고 코드 페이지 1252를 실행하는 컴퓨터에서 엔 기호(\)로 해석됩니다.

유니코드 데이터는 문자당 2바이트를 사용하여 저장됩니다. 모든 확장 문자는 유니코드 사양에 포함되므로 모든 유니코드 문자는 모든 컴퓨터에서 동일하게 해석됩니다.

SQL Server Native Client ODBC 드라이버의 자동 변환 기능은 클라이언트와 코드 페이지가 다른 서버 간에 문자 데이터를 이동하는 문제를 최소화하려고 시도합니다. 자동 변환은 SQLDriverConnect연결 문자열, SQLConfigDataSource구성 문자열 또는 ODBC 관리자를 사용하여 SQL Server Native Client ODBC 드라이버에 대한 데이터 원본을 구성할 때 설정할 수 있습니다.

AutoTranslate을 "아니요"로 설정하면 클라이언트의 SQL_C_CHAR 변수와 SQL Server 데이터베이스의 문자, varchar 또는 텍스트 열, 변수 또는 매개 변수 간에 이동된 데이터에 대해 변환이 수행되지 않습니다. 데이터에 확장 문자가 포함되어 있고 두 컴퓨터에 서로 다른 코드 페이지가 있는 경우 클라이언트 및 서버 컴퓨터에서 비트 패턴이 다르게 해석될 수 있습니다. 두 컴퓨터에 동일한 코드 페이지가 있는 경우 데이터는 동일하게 해석됩니다.

AutoTranslate이 "예"로 설정된 경우 SQL Server Native Client ODBC 드라이버는 유니코드를 사용하여 클라이언트의 SQL_C_CHAR 변수와 SQL Server 데이터베이스의 문자, varchar 또는 텍스트 열, 변수 또는 매개 변수 간에 이동된 데이터를 변환합니다.

  • 클라이언트 의 SQL_C_CHAR 변수에서 SQL Server 데이터베이스의 문자, varchar 또는 텍스트 열, 변수 또는 매개 변수로 데이터를 보내는 경우 ODBC 드라이버는 먼저 클라이언트의 ACP를 사용하여 SQL_C_CHAR 유니코드에서 유니코드로 변환한 다음, 서버의 ACP를 사용하여 유니코드에서 문자로 변환합니다.

  • SQL Server 데이터베이스의 문자, varchar 또는 텍스트 열, 변수 또는 매개 변수에서 클라이언트의 SQL_C_CHAR 변수로 데이터를 보내는 경우 SQL Server Native Client ODBC 드라이버는 먼저 서버의 ACP를 사용하여 문자에서 유니코드로 변환한 다음, 유니코드에서 클라이언트의 ACP를 사용하여 SQL_C_CHAR 변환합니다.

이러한 모든 변환은 클라이언트에서 실행되는 SQL Server Native Client ODBC 드라이버에서 수행되므로 서버 ACP는 클라이언트 컴퓨터에 설치된 코드 페이지 중 하나여야 합니다.

유니코드를 통해 문자를 변환하면 두 코드 페이지에 모두 있는 모든 문자를 적절하게 변환할 수 있습니다. 그러나 한 코드 페이지에 문자가 있지만 다른 코드 페이지에는 없는 경우 대상 코드 페이지에서 문자를 나타낼 수 없습니다. 예를 들어 코드 페이지 1252에는 등록된 상표 기호(®)가 있지만 코드 페이지 437은 등록되지 않습니다.

AutoTranslate 설정은 다음과 같은 변환에 영향을 주지 않습니다.

  • SQL Server 데이터베이스에서 문자 SQL_C_CHAR 클라이언트 변수와 유니코드 nchar, nvarchar 또는 ntext 열, 변수 또는 매개 변수 간에 데이터를 이동합니다.

  • SQL Server 데이터베이스에서 유니코드 SQL_C_WCHAR 클라이언트 변수와 문자 문자, varchar 또는 텍스트 열, 변수 또는 매개 변수 간에 데이터를 이동합니다.

문자에서 유니코드로 이동할 때는 항상 데이터를 변환해야 합니다.

참고 항목

결과 처리(ODBC)
데이터 정렬 및 유니코드 지원