View a markdown version of this page

Differenze tra le versioni 2.x e 1.x del driver ODBC - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dalla Patch 198. Le UDF Python esistenti continueranno a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Differenze tra le versioni 2.x e 1.x del driver ODBC

Questa sezione descrive le differenze tra il driver ODBC 1.x e il driver ODBC 2.x e fornisce indicazioni su come migrare al driver 2.x. Descrive le modifiche che potrebbero influire sull'applicazione e come risolverle.

Principali differenze da affrontare

Le seguenti azioni risolvono i problemi di migrazione più comuni. La maggior parte delle applicazioni richiede solo un sottoinsieme di questi.

DSN e stringa di connessione

  • Controlla il tuo DSN per verificare le opzioni dei driver che potrebbero essere stati rimossi o rinominati. Alcune opzioni del driver ODBC 1.x non sono supportate nel driver ODBC 2.x. Altre sono state rinominate. Per informazioni dettagliate, vedi Stringa di connessione e opzioni DSN.

  • Imposta UseUnicode=true se l'applicazione dipende da codici di tipo di carattere esteso (SQL_WVARCHAR,SQL_WCHAR). Nel driver ODBC 2.x, l'UseUnicodeimpostazione predefinita èfalse, che riporta tipi di caratteri ristretti.

  • Sposta le impostazioni di registrazione nella sezione. [ODBC] Su Linux e macOS, LogLevel e LogPath deve essere impostato nella [ODBC] sezione globale diodbc.ini, non in una singola sezione DSN.

Interrogazione e schema

  • SQLTablesIncludi EXTERNAL TABLE nei filtri di tipo. In ODBC 2.x, sia le tabelle di Amazon Redshift Spectrum che le tabelle di datashare sono riportate come. EXTERNAL TABLE Se filtri SQLTables per tipo, aggiungi per continuare EXTERNAL TABLE a vedere questi oggetti.

  • Trasmetti INTERVAL a VARCHAR per le applicazioni che non supportano il tipo di dati a intervalli. Alcuni client non supportano i tipi di intervallo ODBC. Per questi client, inserisci la colonna nella tua query: SELECT col::VARCHAR FROM ...

Codice dell'applicazione

  • Verifica le impostazioni di timeout delle query. ODBC 2.x viene applicato correttamente SQL_ATTR_QUERY_TIMEOUT secondo le specifiche ODBC. ODBC 1.x ha ignorato silenziosamente questa impostazione. Long-running le interrogazioni eseguite in precedenza potrebbero ora avere esito negativo con un errore di timeout. Rivedi e modifica i valori di timeout secondo necessità.

  • Fornisci la lunghezza dei dati per i parametri di data-at-execution. 2.x riporta SQL_NEED_LONG_DATA_LEN come Y (1.x riportato). N Le applicazioni che associano SQL_DATA_AT_EXEC i parametri devono ora fornire la lunghezza totale dei dati in anticipo. StrLen_or_IndPtr

Stringa di connessione e opzioni DSN

La tabella seguente mostra le opzioni dei driver ODBC 1.x che sono stati rinominati o hanno equivalenti diretti nel driver ODBC 2.x.

opzione 1.x Equivalente a 2.x Note
MaxLongVarChar MaxLongVarcharSize L'impostazione predefinita è stata modificata da 8190 a 65535.
ConnectionTimeout LoginTimeout Stesso timeout di connessione, rinominato. Il valore predefinito è 0 (nessun timeout).
VpcEndpointUrl vpc_endpoint_url
SSLCertPath TrustStore o CaFile Percorso di un certificato CA utilizzato per verificare il server. In Windows, impostalo nel campo Trust Store della finestra di dialogo di configurazione DSN; la finestra di dialogo non ha alcun CaFile campo. Se entrambi sono impostati, ha la TrustStore priorità.

Le seguenti opzioni 1.x non sono supportate nel driver 2.x corrente. Il driver 2.x le ignora, quindi non influiscono sulla connessione. La loro rimozione dal DSN è facoltativa ma consigliata per evitare confusione.

  • SingleRowMode— per limitare la memoria del client, utilizzare StreamingCursorRows invece.

  • UseSystemTrustStore— non supportato. In Windows, il driver 1.x può convalidare il certificato del server rispetto all'archivio certificati di sistema di Windows. Il driver 2.x viene convalidato rispetto a un file di certificato CA: utilizza il certificato root Amazon Redshift in bundle per impostazione predefinita o il file specificato in o. TrustStore CaFile

  • BoolsAsChar— se l'applicazione si basa sul fatto che le colonne BOOLEAN vengano restituite come "0" and "1" strings (SQL_VARCHAR), inserite la colonna nella query, ad esempio. VARCHAR SELECT col::VARCHAR FROM ...

  • TextAsLongVarchar,CheckCertRevocation,,EnableAwsSdkLogs,UseLogPrefix,Locale,UseDeclareFetch, UseMultipleStatementsEnforceSingleStatement, EnableTableTypes — nessun equivalente nella versione corrente. Il team di Amazon Redshift sta valutando soluzioni equivalenti o alternative per queste opzioni nelle versioni future.

Per l'elenco completo delle opzioni 2.x supportate, consulta. Opzioni del driver ODBC

Modifiche ai tipi di dati

La tabella seguente mostra le mappature dei tipi di dati di Amazon Redshift che sono state modificate in ODBC 2.x per conformarsi alle specifiche ODBC. La maggior parte delle applicazioni non ne risente perché associano le colonne per indice o nome anziché per tipo di codice.

Tipi di dati di Amazon Redshift ODBC 1.x ODBC 2.x
DOUBLE PRECISION SQL_FLOAT(6) SQL_DOUBLE (8)
INTERVAL YEAR TO MONTH SQL_VARCHAR(12), testo SQL_INTERVAL_YEAR_TO_MONTH(107), struttura a intervalli
INTERVAL DAY TO SECOND SQL_VARCHAR(12), testo SQL_INTERVAL_DAY_TO_SECOND(110), struttura a intervalli
VARCHAR / CHAR / TEXT Tipi larghi (SQL_WVARCHAR,SQL_WCHAR,SQL_WLONGVARCHAR); impostazione predefinita UseUnicode=true Tipi ristretti (SQL_VARCHAR,SQL_CHAR,SQL_LONGVARCHAR). Impostato UseUnicode=true per ripristinare tipi estesi.
GEOMETRY/GEOGRAPHY(comeSQL_C_BINARY) Hex-encoded stringa ASCII Byte binari non elaborati

I COLUMN_SIZE valori restituiti da sono SQLColumns stati modificati anche per GEOMETRYGEOGRAPHY, e SUPER i tipi di dati, che ora restituiscono NULL per indicare colonne non dimensionate secondo la specifica ODBC. Le applicazioni che allocano i buffer in base a COLUMN_SIZE devono gestire NULL utilizzando una dimensione di buffer predefinita.

Post-migration risoluzione dei problemi

La tabella seguente descrive i problemi più comuni che potresti riscontrare dopo la migrazione e come risolverli.

Caratteristiche Causa Cosa fare
Tabelle esterne non visibili nel browser degli schemi Le tabelle dello spettro e delle condivisioni di dati sono riportate come EXTERNAL TABLE Includi EXTERNAL TABLE nel filtro SQLTables tipo.
errori pyodbc nelle colonne degli intervalli pyodbc non supporta i tipi di intervalli ODBC Trasmetti gli intervalli alle query in. VARCHAR
I dati dei personaggi vengono visualizzati come caratteri inaspettati (mojibake) UseUnicodeimpostazione predefinita modificata in. false Le applicazioni che prevedono dati wide-character (UTF-16) potrebbero interpretare erroneamente i byte a caratteri stretti come coppie ampie, producendo un output confuso. I dati stessi rimangono invariati. Imposta UseUnicode=true nel tuo DSN o aggiorna l'applicazione per associare le colonne come SQL_C_CHAR invece di. SQL_C_WCHAR
Long-running le query restituiscono errori di timeout SQL_ATTR_QUERY_TIMEOUTè ora applicato. ODBC 1.x ha ignorato silenziosamente questa impostazione. Aumenta o rimuovi QueryTimeout dal tuo DSN oppure imposta SQL_ATTR_QUERY_TIMEOUT su 0 nell'applicazione.
L'impostazione restituisce SQL_ATTR_CURRENT_CATALOG HY011 L'attributo non può essere impostato su una connessione aperta. La commutazione di database su una connessione aperta non è supportata. Imposta l'attributo prima della connessione oppure chiudi e riapri la connessione sul database di destinazione.
La connessione si blocca in ambienti dual-stack Limitazione nelle versioni <= 2.1.16 Aggiornamento alla versione 2.1.17 o successiva.
L'analisi dei messaggi di errore restituisce risultati imprevisti Il formato dei messaggi è stato modificato; i codici SQLSTATE sono rimasti invariati Analizza i codici SQLSTATE anziché il testo del messaggio.
Data-at-execution l'associazione dei parametri si comporta in modo diverso SQL_NEED_LONG_DATA_LENcambiato da FALSE a TRUE; le applicazioni che lo utilizzano SQL_DATA_AT_EXEC devono ora fornire anticipatamente la lunghezza totale dei dati Imposta il valore della lunghezza StrLen_or_IndPtr durante l'associazione SQL_DATA_AT_EXEC dei parametri.
I registri dei driver non vengono generati LogLevele LogPath deve trovarsi nella sezione [ODBC] globale diodbc.ini, non nelle singole sezioni DSN Sposta le impostazioni di registrazione dal tuo DSN alla sezione. [ODBC]

Aggiornamento da una versione precedente di ODBC 2.x

Se utilizzi già una versione precedente di ODBC 2.x, esegui l'upgrade alla versione più recente. Per un elenco completo dei miglioramenti e delle correzioni di bug in tutte le versioni, consulta il log on di modifica del driver ODBC di Amazon Redshift. GitHub

Ulteriori informazioni