Controllo dell'installazione del driver ODBC

Sommario

Questo articolo illustra come verificare che un driver ODBC (Open Database Connectivity) sia installato, registrato e configurato correttamente in un computer Windows. Usarlo quando un'applicazione non riesce a connettersi a un database, quando un driver ODBC non viene visualizzato nell'amministratore origine dati ODBC o quando viene visualizzato l'errore Data source name not found and no default driver specified (SQLSTATE IM002). I passaggi di verifica riguardano le copie a 32 bit e a 64 bit dell'Amministratore delle origini dati ODBC, le voci relative al nome origine dati (DSN) e al driver nel Registro di sistema di Windows e la stringa di connessione che l'applicazione passa al Gestione driver ODBC.

Quale versione dell'Amministratore origine dati ODBC devi aprire?

Nelle versioni a 64 bit di Windows sono disponibili due copie dell'amministratore dell'origine dati ODBC e ogni copia gestisce i driver e i DSN di sistema che corrispondono al livello di bit:

  • Per le applicazioni a 64 bit, selezionare Windows+R e digitare ODBCAD32.EXE o C:\WINDOWS\SYSTEM32\ODBCAD32.EXE.

  • Per le applicazioni a 32 bit, selezionare Windows+R e digitare C:\WINDOWS\SYSWOW64\ODBCAD32.EXE.

Entrambi i file eseguibili sono denominati odbcad32.exe, quindi il percorso della cartella determina quale aprire. Associare sempre lo strumento al bit dell'applicazione che stabilisce la connessione. Un'applicazione a 32 bit non può caricare un driver ODBC a 64 bit e un'applicazione a 64 bit non può caricare un driver ODBC a 32 bit.

Esempi di stringhe di connessione ODBC

Le applicazioni che chiamano un driver ODBC possono usare nomi di origine dati (DSN) o stringhe di connessione senza DSN. Ecco alcuni esempi:

  • driver={ODBC Driver 18 for SQL Server};server=sqlprod01;database=AdventureWorks;trusted_connection=yes
  • dsn=userdsn1
  • dsn=test;uid=<user name>;pwd=<password>

La prima stringa di connessione specifica in modo esplicito il nome del driver, il nome del server, il nome del database e se usare la sicurezza integrata (trusted_connection). Si tratta di una connessione senza DSN.

La seconda e la terza stringa di connessione utilizzano un DSN, che incapsula questi elementi archiviati nel Registro di sistema. Il nome utente e la password non possono essere archiviati nel DSN e devono essere specificati in modo esplicito. Per altre informazioni sugli attributi DSN, vedere Attributo DSN stringa di connessione.

Un DSN è una scorciatoia che consente alle applicazioni di caricare il driver, fornendo un livello di indirezione. Usando un DSN, è possibile modificare il server, il database e persino il tipo di database a cui l'applicazione si connette senza modificare l'applicazione.

Il nome del driver nel stringa di connessione deve corrispondere al nome di un driver registrato nel computer. I nomi driver e DSN non fanno distinzione tra maiuscole e minuscole, ma l'ortografia e la punteggiatura devono corrispondere esattamente. Se nessun driver registrato corrisponde, il Driver Manager ODBC non può caricare il driver.

Nota

Il SQL Server driver (sqlsrv32.dll) fornito con Windows e il driver SQL Server Native Client (SQL Server Native Client 11.0) non sono consigliati per il nuovo sviluppo. SQL Server Native Client non viene fornito con SQL Server 2022 (16.x) e versioni successive o SQL Server Management Studio 19 e versioni successive. Per le nuove connessioni, usare il driver ODBC Microsoft per SQL Server, che è possibile scaricare per Windows, Linux e macOS.

Verificare che il driver e il DSN siano visualizzati nell'Amministratore origine dati ODBC

Utilizzare l'amministratore origine dati ODBC per verificare la presenza di driver ODBC e DSN. Aprire la copia corrispondente alla velocità di bit dell'applicazione e quindi controllare la scheda Driver per verificare se il driver è elencato. Gli screenshot seguenti mostrano driver a 64 bit e a 32 bit:

Schermata che mostra un driver a 64 bit.

La schermata mostra un driver a 32 bit.

Se il driver è elencato, creare un DSN di test nella scheda DSN di sistema o DSN utente ed eseguire un test di connessione. Un test riuscito conferma che il driver viene caricato e che il server è raggiungibile. Se il driver non è elencato, reinstallare il driver e quindi controllare le chiavi del Registro di sistema come descritto nella sezione successiva.

Informazioni sul driver ODBC e sul DSN nel Registro di sistema

Le informazioni sul driver e sul DSN vengono archiviate nel Registro di sistema:

La schermata mostra le informazioni sul driver e sul DSN nel registro di sistema.

Nei computer a 64 bit, il reindirizzamento del Registro di sistema separa le informazioni a 32 bit e a 64 bit per driver e DSN di sistema. La Wow6432Node voce del Registro di sistema archivia le informazioni sul driver a 32 bit e sul DSN di sistema. I DSN utente non vengono reindirizzati, quindi gli strumenti a 32 bit e a 64 bit visualizzano tutti i DSN utente. Le chiavi pertinenti sono:

  • HKEY_LOCAL_MACHINE\SOFTWARE\ODBC (driver a 64 bit e DSN di sistema)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC (driver a 32 bit e DSN di sistema)
  • HKEY_CURRENT_USER\Software\ODBC (DSN utente per l'utente corrente)

La ODBC.INI sottochiave contiene un elenco di tutti i DSN e le sottochiavi per ogni DSN. La ODBCINST.INI sottochiave elenca tutti i driver.

La schermata mostra le sottochiavi ODBC.INI e ODBCINST.INI.

Se si verifica un problema durante il caricamento di un driver tramite il DSN, controllare la ODBC.INI sottochiave per individuare il driver usato dal DSN.

La schermata mostra come verificare quale driver usa il DSN.

Verificare anche che il percorso del driver elencato in ODBCINST.INI punti a un file DLL esistente su disco. Una voce del Registro di sistema che fa riferimento a una DLL mancante o spostata è una causa comune di errori di caricamento dopo una disinstallazione, un aggiornamento o una pulizia manuale dei file. Per i nomi di file e i percorsi installati dal driver ODBC Microsoft per SQL Server, vedere Requisiti di sistema, installazione e file driver.

Nota

La voce LastUser non influisce sulla stringa di connessione. Viene usato solo durante il test del DSN nell'amministratore dell'origine dati ODBC.

Risolvere i problemi relativi all'errore IM002: nome dell'origine dati non trovato e nessun driver predefinito specificato

Convalidare il nome del server, il nome del database e se il driver è installato. Se il driver non può essere caricato, viene visualizzato il seguente messaggio di errore:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Nome dell'origine dati non trovato e nessun driver predefinito specificato.

Questo errore indica che ODBC Driver Manager non è riuscito a risolvere il nome DSN o il nome del driver nella stringa di connessione. Controllare gli elementi seguenti nell'ordine:

  1. Il nome DSN nel stringa di connessione corrisponde a un DSN elencato nell'amministratore origine dati ODBC.
  2. Viene installato un driver della velocità di bit corrispondente. Un DSN utente viene visualizzato sia negli strumenti a 32 che a 64 bit, ma la connessione fallisce se il driver a cui punta non è installato per l'architettura dell'applicazione. Per altre informazioni, vedere Lo strumento amministratore ODBC visualizza sia i DSN utente a 32 bit che i DSN utente a 64 bit.
  3. Il DSN di sistema è stato creato nello strumento corrispondente all'architettura dell'applicazione. I DSN di sistema vengono reindirizzati al Registro di sistema, quindi un DSN di sistema creato nello strumento a 64 bit non è disponibile per un'applicazione a 32 bit.
  4. L'ambito DSN corrisponde all'account che esegue l'applicazione. Un DSN utente in HKEY_CURRENT_USER non è visibile a un servizio eseguito con un account diverso. Usare un DSN di sistema per servizi e applicazioni Web.
  5. Il nome del driver in una stringa di connessione senza DSN corrisponde a un driver elencato nella sottochiave ODBCINST.INI.

Anche se il percorso del driver nel DSN non è corretto, il gestore driver può comunque individuarlo nella sottochiave ODBCINST.INI a partire dal nome del driver elencato nella chiave del Registro di sistema ODBC Data Sources.

Se il driver viene caricato ma la connessione non riesce, il problema è in genere la rete, l'autenticazione o la crittografia correlata anziché un problema di installazione. Per questi sintomi, vedere Risolvere i problemi di connettività in SQL Server.

Supporto per i driver ODBC non Microsoft

Per i driver ODBC non Microsoft, Microsoft supporto è limitato alle azioni seguenti:

  • Verificare se sono presenti le chiavi di registro del driver. Se così non fosse, reinstallare il driver o consultare il fornitore.
  • Controllare se i percorsi puntano a un file DLL esistente. Se non lo fanno, reinstalla il driver o consulta il produttore.
  • Creare un DSN di test ed eseguire un test di connessione.
  • Aiuta ad acquisire una traccia di Process Monitor (Procmon) che il produttore può analizzare.

Il comportamento del driver, i difetti del driver e la logica di installazione del driver rimangono responsabilità del fornitore che ha prodotto il driver.

Clausola di esclusione della responsabilità per informazioni di terze parti

I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non offre alcuna garanzia, implicita o espressa, sulle prestazioni o sull'affidabilità di questi prodotti.