

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# ODBC 드라이버 버전 2.x와 1.x의 차이점
<a name="odbc20-odbc10-driver-differences"></a>

이 섹션에서는 [ODBC 1.x 드라이버](configure-odbc-connection.md)와 [ODBC 2.x 드라이버](odbc20-install.md)의 차이점을 설명하고 2.x 드라이버로 마이그레이션하는 방법에 대한 지침을 제공합니다. 애플리케이션에 영향을 미칠 수 있는 변경 사항과 이를 해결하는 방법을 설명합니다.

## 해결해야 할 주요 차이점
<a name="odbc20-migrate-key-differences"></a>

다음 작업은 가장 일반적인 마이그레이션 문제를 해결합니다. 대부분의 애플리케이션에는 이 중 일부만 필요합니다.

### DSN 및 연결 문자열
<a name="odbc20-migrate-dsn"></a>
+ **DSN에서 제거되거나 이름이 변경되었을 수 있는 드라이버 옵션을 검토합니다.** 일부 ODBC 1.x 드라이버 옵션은 ODBC 2.x 드라이버에서 지원되지 않습니다. 나머지는 이름이 변경되었습니다. 세부 정보는 [연결 문자열 및 DSN 옵션](#odbc20-migrate-connection-options) 섹션을 참조하세요.
+ **애플리케이션이 와이드 문자 유형 코드(`SQL_WVARCHAR`, `SQL_WCHAR`)에 의존하는 경우 `UseUnicode=true`를 설정합니다.** ODBC 2.x 드라이버에서 `UseUnicode`는 기본적으로 `false`로 설정되어 좁은 문자 유형을 보고합니다.
+ **로깅 설정을 `[ODBC]` 섹션으로 이동합니다.** Linux 및 macOS에서는 개별 DSN 섹션이 아닌 `odbc.ini`의 글로벌 `[ODBC]` 섹션에서 `LogLevel` 및 `LogPath`를 설정해야 합니다.

### 쿼리 및 스키마
<a name="odbc20-migrate-query-schema"></a>
+ **`SQLTables` 유형 필터에 `EXTERNAL TABLE`을 포함합니다.** ODBC 2.x에서는 Amazon Redshift Spectrum 테이블과 데이터 공유 테이블이 모두 `EXTERNAL TABLE`로 보고됩니다. 유형별로 `SQLTables`를 필터링하는 경우 `EXTERNAL TABLE`을 추가하여 이러한 객체를 계속 확인합니다.
+ **간격 데이터 유형을 지원하지 않는 애플리케이션의 경우 `INTERVAL`을 `VARCHAR`에 캐스팅합니다.** 일부 클라이언트는 ODBC 간격 유형을 지원하지 않습니다. 이러한 클라이언트의 경우 쿼리에서 해당 열을 캐스팅합니다. `SELECT col::VARCHAR FROM ...` 

### 애플리케이션 코드
<a name="odbc20-migrate-application-code"></a>
+ **쿼리 제한 시간 설정을 확인합니다.** ODBC 2.x는 ODBC 사양에 따라 `SQL_ATTR_QUERY_TIMEOUT`을 올바르게 적용합니다. ODBC 1.x는 이 설정을 자동으로 무시했습니다. 이전에 성공한 장기 실행 쿼리는 이제 제한 시간 오류와 함께 실패할 수 있습니다. 필요에 따라 제한 시간 값을 검토하고 조정합니다.
+ **data-at-execution 파라미터의 데이터 길이를 제공합니다.** 2.x는 `SQL_NEED_LONG_DATA_LEN`을 `Y`(1.x는 `N`을 보고함)로 보고합니다. `SQL_DATA_AT_EXEC` 파라미터를 바인딩하는 애플리케이션은 이제 `StrLen_or_IndPtr`에서 총 데이터 길이를 미리 제공해야 합니다.

## 연결 문자열 및 DSN 옵션
<a name="odbc20-migrate-connection-options"></a>

다음 표에는 이름이 변경되었거나 ODBC 2.x 드라이버에 직접적으로 대응하는 ODBC 1.x 드라이버 옵션이 나와 있습니다.


| 1.x 옵션 | 2.x 동등 | 참고 | 
| --- | --- | --- | 
| MaxLongVarChar | MaxLongVarcharSize | 기본값이 8190에서 65535로 변경되었습니다. | 
| ConnectionTimeout | LoginTimeout | 동일한 연결 제한 시간, 이름이 변경되었습니다. 기본값은 0(제한 시간 없음)입니다. | 
| VpcEndpointUrl | vpc\_endpoint\_url |  | 
| SSLCertPath | TrustStore 또는 CaFile | 서버를 확인하는 데 사용되는 CA 인증서의 경로입니다. Windows에서는 DSN 설정 대화 상자의 Trust Store 필드에서 이 값을 설정합니다. 대화 상자에는 CaFile 필드가 없습니다. 둘 다 설정하면 TrustStore가 우선순위를 갖습니다. | 

다음 1.x 옵션은 현재 2.x 드라이버에서 지원되지 않습니다. 2.x 드라이버는 이를 무시하므로 연결에 영향을 주지 않습니다. DSN에서 제거하는 것은 선택 사항이지만 혼동을 방지하기 위해 권장됩니다.
+ `SingleRowMode` - 클라이언트 메모리를 제한하려면 대신 `StreamingCursorRows`를 사용합니다.
+ `UseSystemTrustStore` - 지원되지 않습니다. Windows에서 1.x 드라이버는 Windows 시스템 인증서 스토어에 대해 서버 인증서를 검증할 수 있습니다. 2.x 드라이버는 CA 인증서 파일을 기준으로 검증합니다. 기본적으로 번들 Amazon Redshift 루트 인증서 또는 `TrustStore`나 `CaFile`에서 지정한 파일을 사용합니다.
+ `BoolsAsChar` - 애플리케이션이 `"0"` 및 `"1"` 문자열(`SQL_VARCHAR`)로 반환되는 BOOLEAN 열에 의존하는 경우 쿼리에서 열을 `VARCHAR`로 캐스팅합니다(예: `SELECT col::VARCHAR FROM ...`).
+ `TextAsLongVarchar`, `CheckCertRevocation`, `EnableAwsSdkLogs`, `UseLogPrefix`, `Locale`, `UseDeclareFetch`, `UseMultipleStatements`, `EnforceSingleStatement`, `EnableTableTypes` – 현재 릴리스에는 동등한 기능이 없습니다. Amazon Redshift 팀은 향후 릴리스에서 이러한 옵션에 대해 동등한 기능이나 대안을 검토하고 있습니다.

지원되는 2.x 옵션의 전체 목록은 [ODBC 드라이버 옵션](odbc20-configuration-options.md) 섹션을 참조하세요.

## 데이터 유형 변경
<a name="odbc20-migrate-data-types"></a>

다음 표에는 ODBC 사양을 준수하기 위해 ODBC 2.x에서 변경된 Amazon Redshift 데이터 유형 매핑이 나와 있습니다. 대부분의 애플리케이션은 유형 코드가 아닌 인덱스 또는 이름으로 열을 바인딩하기 때문에 영향을 받지 않습니다.


| Amazon Redshift 데이터 형식 | ODBC 1.x | ODBC 2.x | 
| --- | --- | --- | 
| DOUBLE PRECISION | SQL\_FLOAT(6) | SQL\_DOUBLE(8) | 
| INTERVAL YEAR TO MONTH | SQL\_VARCHAR(12), 텍스트 | SQL\_INTERVAL\_YEAR\_TO\_MONTH(107), 간격 구문 | 
| INTERVAL DAY TO SECOND | SQL\_VARCHAR(12), 텍스트 | SQL\_INTERVAL\_DAY\_TO\_SECOND(110), 간격 구문 | 
| VARCHAR / CHAR / TEXT | 와이드 유형(SQL\_WVARCHAR, SQL\_WCHAR, SQL\_WLONGVARCHAR), 기본값 UseUnicode=true | 좁은 유형(SQL\_VARCHAR, SQL\_CHAR, SQL\_LONGVARCHAR). 와이드 유형을 복원하도록 UseUnicode=true를 설정합니다. | 
| GEOMETRY / GEOGRAPHY(SQL\_C\_BINARY) | 16진수 인코딩 ASCII 문자열 | 원시 바이너리 바이트 | 

`SQLColumns`에서 반환한 `COLUMN_SIZE` 값도 `GEOMETRY`, `GEOGRAPHY` 및 `SUPER` 데이터 유형에 대해 변경되었으며, 이제 ODBC 사양에 따라 크기가 조정되지 않은 열을 나타내기 위해 NULL을 반환합니다. `COLUMN_SIZE`를 기반으로 버퍼를 할당하는 애플리케이션은 기본 버퍼 크기를 사용하여 NULL을 처리해야 합니다.

## 마이그레이션 후 문제 해결
<a name="odbc20-migrate-troubleshooting"></a>

다음 표에서는 마이그레이션 후 발생할 수 있는 일반적인 문제와 이를 해결하는 방법을 설명합니다.


| 증상 | 원인 | 수행할 작업 | 
| --- | --- | --- | 
| 스키마 브라우저에 외부 테이블이 표시되지 않음 | Spectrum 및 데이터 공유 테이블은 EXTERNAL TABLE로 보고됩니다. | SQLTables 유형 필터에 EXTERNAL TABLE을 포함합니다. | 
| 간격 열의 pyodbc 오류 | pyodbc는 ODBC 간격 유형을 지원하지 않음 | 쿼리에서 간격을 VARCHAR로 캐스팅합니다. | 
| 문자 데이터가 예기치 않은 문자로 표시됨(mojibake) | UseUnicode 기본값이 false로 변경되었습니다. 와이드 문자(UTF-16) 데이터를 예상하는 애플리케이션은 좁은 문자 바이트를 와이드 페어로 잘못 해석하여 출력이 깨질 수 있습니다. 데이터 자체는 변경되지 않습니다. | DSN에서 UseUnicode=true를 설정하거나 열을 SQL\_C\_WCHAR 대신 SQL\_C\_CHAR로 바인딩하도록 애플리케이션을 업데이트합니다. | 
| 장기 실행 쿼리는 제한 시간 오류를 반환함 | 이제 SQL\_ATTR\_QUERY\_TIMEOUT이 적용됩니다. ODBC 1.x는 이 설정을 자동으로 무시했습니다. | DSN에서 QueryTimeout을 늘리거나 제거하거나 애플리케이션에서 SQL\_ATTR\_QUERY\_TIMEOUT을 0으로 설정합니다. | 
| SQL\_ATTR\_CURRENT\_CATALOG 설정 시 HY011 반환 | 속성은 열린 연결에서 설정할 수 없습니다. 열린 연결의 데이터베이스 전환은 지원되지 않습니다. | 연결하기 전에 속성을 설정하거나 대상 데이터베이스에서 연결을 닫았다가 다시 엽니다. | 
| 듀얼 스택 환경에서 연결이 끊김 | 버전 <= 2.1.16의 제한 사항 | 2.1.17 이상으로 업그레이드. | 
| 오류 메시지 구문 분석이 예상치 못한 결과를 반환함 | 메시지 형식 변경됨, SQLSTATE 코드가 변경되지 않음 | 메시지 텍스트 대신 SQLSTATE 코드를 구문 분석합니다. | 
| Data-at-execution 파라미터 바인딩이 다르게 동작함 | SQL\_NEED\_LONG\_DATA\_LEN이 FALSE에서 TRUE로 변경되었습니다. SQL\_DATA\_AT\_EXEC를 사용하는 애플리케이션은 이제 총 데이터 길이를 미리 제공해야 합니다. | SQL\_DATA\_AT\_EXEC 파라미터를 바인딩할 때 StrLen\_or\_IndPtr의 길이 값을 설정합니다. | 
| 드라이버 로그가 생성되지 않음 | 개별 DSN 섹션이 아닌 odbc.ini의 [ODBC] 글로벌 섹션에 LogLevel 및 LogPath가 있어야 합니다. | 로깅 설정을 DSN에서 [ODBC] 섹션으로 이동합니다. | 

## 이전 ODBC 2.x 버전에서 업그레이드
<a name="odbc20-migrate-upgrade-2x"></a>

이전 ODBC 2.x 버전을 이미 실행 중인 경우 최신 릴리스로 업그레이드하세요. 모든 버전의 개선 사항 및 버그 수정에 대한 전체 목록은 GitHub의 [Amazon Redshift ODBC 드라이버 변경 로그](https://github.com/aws/amazon-redshift-odbc-driver/blob/main/CHANGELOG.md)를 참조하세요.

## 추가 정보
<a name="odbc20-migrate-more-info"></a>
+ [Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성](odbc20-install.md)
+ [ODBC 드라이버 옵션](odbc20-configuration-options.md)
+ [Amazon Redshift ODBC 드라이버 변경 로그](https://github.com/aws/amazon-redshift-odbc-driver/blob/main/CHANGELOG.md)