

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Diferenças entre as versões 2.x e 1.x do driver ODBC
<a name="odbc20-odbc10-driver-differences"></a>

Esta seção descreve as diferenças entre o [driver ODBC 1.x](configure-odbc-connection.md) e o [driver ODBC 2.x](odbc20-install.md) e fornece orientação sobre como migrar para o driver 2.x. Ela descreve as mudanças que podem afetar seu aplicativo e como resolvê-las.

## Principais diferenças a serem consideradas
<a name="odbc20-migrate-key-differences"></a>

As ações a seguir resolvem os problemas de migração mais comuns. A maioria dos aplicativos precisa apenas de um subconjunto delas.

### DSN e string de conexão
<a name="odbc20-migrate-dsn"></a>
+ **Revise seu DSN para ver as opções de driver que podem ter sido removidas ou renomeadas.** Algumas opções de driver ODBC 1.x não são compatíveis com o driver ODBC 2.x. Outras foram renomeadas. Para mais detalhes, consulte [String de conexão e opções de DSN](#odbc20-migrate-connection-options).
+ **Defina `UseUnicode=true` se seu aplicativo depender de códigos de tipo de caracteres largos (`SQL_WVARCHAR`, `SQL_WCHAR`).** No driver ODBC 2.x, o padrão de `UseUnicode` é `false`, que relata tipos de caracteres estreitos.
+ **Mova as configurações de registro para a seção `[ODBC]`.** No Linux e no macOS, `LogLevel` e `LogPath` devem ser definidos na seção `[ODBC]` global de `odbc.ini`, não em uma seção DSN individual.

### Consulta e esquema
<a name="odbc20-migrate-query-schema"></a>
+ **Inclua `EXTERNAL TABLE` nos filtros de tipo `SQLTables`.** No ODBC 2.x, tanto as tabelas do Amazon Redshift Spectrum quanto as tabelas de unidade de compartilhamento de dados são relatadas como `EXTERNAL TABLE`. Se você filtrar `SQLTables` por tipo, adicione `EXTERNAL TABLE` para continuar vendo esses objetos.
+ **Converta `INTERVAL` em `VARCHAR` para aplicativos que não aceitam o tipo de dados de intervalo.** Alguns clientes não oferecem suporte aos tipos de intervalo ODBC. Para esses clientes, coloque a coluna em sua consulta: `SELECT col::VARCHAR FROM ...`

### Código da aplicação
<a name="odbc20-migrate-application-code"></a>
+ **Verifique as configurações de tempo limite da consulta.** O ODBC 2.x aplica `SQL_ATTR_QUERY_TIMEOUT` corretamente de acordo com a especificação ODBC. O ODBC 1.x ignorava essa configuração. Consultas de longa execução que antes eram bem-sucedidas agora podem falhar com um erro de tempo limite. Revise e ajuste os valores de tempo limite conforme necessário.
+ **Forneça o comprimento dos dados para os parâmetros de execução de dados.** A versão 2.x relata `SQL_NEED_LONG_DATA_LEN` como `Y` (a versão 1.x relatava `N`). Os aplicativos que vinculam parâmetros `SQL_DATA_AT_EXEC` agora devem fornecer o tamanho total dos dados antes em `StrLen_or_IndPtr`.

## String de conexão e opções de DSN
<a name="odbc20-migrate-connection-options"></a>

A tabela a seguir mostra as opções do driver ODBC 1.x que foram renomeadas ou têm equivalentes diretos no driver ODBC 2.x.


| Opção 1.x | Equivalente de 2.x | Observações | 
| --- | --- | --- | 
| MaxLongVarChar | MaxLongVarcharSize | Padrão alterado de 8190 para 65535. | 
| ConnectionTimeout | LoginTimeout | Mesmo tempo limite de conexão, renomeado. O padrão é 0 (nenhum tempo limite). | 
| VpcEndpointUrl | vpc\_endpoint\_url |  | 
| SSLCertPath | TrustStore ou CaFile | Caminho para um certificado CA usado para verificar o servidor. No Windows, defina isso no campo Armazenamento confiável da caixa de diálogo de configuração do DSN; a caixa de diálogo não tem o campo CaFile. Se ambos estiverem definidos, TrustStore terá prioridade. | 

As seguintes opções 1.x não são compatíveis com o driver 2.x atual. O driver 2.x as ignora, de modo que elas não afetam sua conexão. Removê-las do DSN é opcional, mas é recomendável para evitar confusão.
+ `SingleRowMode`: para limitar a memória do cliente, use `StreamingCursorRows`.
+ `UseSystemTrustStore`: incompatível. No Windows, o driver 1.x pode validar o certificado do servidor em relação ao armazenamento de certificados do sistema Windows. O driver 2.x é validado em relação a um arquivo de certificado CA: ele usa o certificado raiz do Amazon Redshift incluído por padrão ou o arquivo que você especifica em `TrustStore` ou `CaFile`.
+ `BoolsAsChar`: se o seu aplicativo dependia do retorno de colunas BOOLEAN como strings `"0"` e `"1"` (`SQL_VARCHAR`), converta a coluna em `VARCHAR` em sua consulta, por exemplo, `SELECT col::VARCHAR FROM ...`.
+ `TextAsLongVarchar`, `CheckCertRevocation`, `EnableAwsSdkLogs`, `UseLogPrefix`, `Locale`, `UseDeclareFetch`, `UseMultipleStatements`, `EnforceSingleStatement`, `EnableTableTypes`: não há equivalente na versão atual. A equipe do Amazon Redshift está avaliando equivalentes ou alternativas para essas opções em versões futuras.

Para obter a lista completa das opções 2.x compatíveis, consulte [Opções do driver ODBC](odbc20-configuration-options.md).

## Alterações de tipo de dados
<a name="odbc20-migrate-data-types"></a>

A tabela a seguir mostra os mapeamentos de tipos de dados do Amazon Redshift que foram alterados no ODBC 2.x para estar em conformidade com a especificação ODBC. A maioria dos aplicativos não é afetada porque eles vinculam colunas por índice ou nome, em vez de por código de tipo.


| Tipo de dados do Amazon Redshift | ODBC 1.x | ODBC 2.x | 
| --- | --- | --- | 
| DOUBLE PRECISION | SQL\_FLOAT (6) | SQL\_DOUBLE (8) | 
| INTERVAL YEAR TO MONTH | SQL\_VARCHAR (12), texto | SQL\_INTERVAL\_YEAR\_TO\_MONTH (107), estrutura de intervalo | 
| INTERVAL DAY TO SECOND | SQL\_VARCHAR (12), texto | SQL\_INTERVAL\_DAY\_TO\_SECOND (110), estrutura de intervalo | 
| VARCHAR / CHAR / TEXT | Tipos largos (SQL\_WVARCHAR, SQL\_WCHAR, SQL\_WLONGVARCHAR); padrão UseUnicode=true | Tipos estreitos (SQL\_VARCHAR, SQL\_CHAR, SQL\_LONGVARCHAR). Defina UseUnicode=true para restaurar tipos largos. | 
| GEOMETRY / GEOGRAPHY (como SQL\_C\_BINARY) | String ASCII com codificação hexadecimal | Bytes binários brutos | 

Os valores `COLUMN_SIZE` retornados por `SQLColumns` também foram alterados para `GEOMETRY`, `GEOGRAPHY` e tipos de dados `SUPER`, que agora retornam NULL para indicar colunas não dimensionadas de acordo com a especificação ODBC. Os aplicativos que alocam buffers com base em `COLUMN_SIZE` devem manipular NULL usando um tamanho de buffer padrão.

## Solução de problemas pós-migração
<a name="odbc20-migrate-troubleshooting"></a>

A tabela a seguir descreve os problemas comuns que você pode encontrar após a migração e como resolvê-los.


| Sintomas | Causa | O que fazer | 
| --- | --- | --- | 
| Tabelas externas não visíveis no navegador de esquemas | As tabelas de espectro e unidade de compartilhamento de dados são relatadas como EXTERNAL TABLE | Inclua EXTERNAL TABLE no filtro de tipo SQLTables. | 
| erros pyodbc em colunas de intervalo | pyodbc não suporta tipos de intervalo ODBC | Transmita intervalos para VARCHAR em consultas. | 
| Os dados dos caracteres são exibidos como caracteres inesperados (mojibake) | Padrão de UseUnicode alterado para false. Os aplicativos que esperam dados de caracteres largos (UTF-16) podem interpretar erroneamente os bytes de caracteres estreitos como pares largos, produzindo uma saída distorcida. Os dados em si não são alterados. | Defina UseUnicode=true no DSN ou atualize seu aplicativo para vincular colunas como SQL\_C\_CHAR em vez de SQL\_C\_WCHAR. | 
| Consultas de longa execução retornam erros de tempo limite | SQL\_ATTR\_QUERY\_TIMEOUT agora está em vigor. O ODBC 1.x ignorava essa configuração. | Aumente ou remova QueryTimeout do DSN ou defina SQL\_ATTR\_QUERY\_TIMEOUT como 0 no seu aplicativo. | 
| Definir SQL\_ATTR\_CURRENT\_CATALOG retorna HY011 | O atributo não pode ser definido em uma conexão aberta. Não há suporte para alternar bancos de dados em uma conexão aberta. | Defina o atributo antes de se conectar ou feche e reabra a conexão no banco de dados de destino. | 
| A conexão trava em ambientes de pilha dupla | Limitação nas versões <= 2.1.16 | Atualize para o 2.1.17 ou versão superior. | 
| A análise de mensagens de erro retorna resultados inesperados | Formato da mensagem alterado; códigos SQLSTATE inalterados | Analise os códigos SQLSTATE em vez do texto da mensagem. | 
| A vinculação de parâmetros de execução de dados em execução se comporta de maneira diferente | SQL\_NEED\_LONG\_DATA\_LEN mudou de FALSE para TRUE; os aplicativos que usam SQL\_DATA\_AT\_EXEC agora devem fornecer o tamanho total dos dados com antecedência | Defina o valor do comprimento em StrLen\_or\_IndPtr ao vincular os parâmetros SQL\_DATA\_AT\_EXEC. | 
| Os logs do driver não são gerados | LogLevel e LogPath devem estar na seção [ODBC] global de odbc.ini, não em seções DSN individuais | Mova as configurações de registro do DSN para a seção [ODBC]. | 

## Atualização de uma versão mais antiga do ODBC 2.x
<a name="odbc20-migrate-upgrade-2x"></a>

Se você já estiver executando uma versão mais antiga do ODBC 2.x, atualize para a versão mais recente. Para obter uma lista completa de aprimoramentos e correções de erros em todas as versões, consulte [Log de alterações do driver ODBC do Amazon Redshift](https://github.com/aws/amazon-redshift-odbc-driver/blob/main/CHANGELOG.md) no GitHub.

## Mais informações
<a name="odbc20-migrate-more-info"></a>
+ [Configurar uma conexão para o driver ODBC versão 2.x para o Amazon Redshift](odbc20-install.md)
+ [Opções do driver ODBC](odbc20-configuration-options.md)
+ [Log de alterações do driver ODBC do Amazon Redshift](https://github.com/aws/amazon-redshift-odbc-driver/blob/main/CHANGELOG.md)