Connessione a un'origine dati (ODBC)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Dopo avere allocato handle di ambiente e di connessione e avere impostato tutti gli attributi di connessione, l'applicazione si connette all'origine dati o al driver. È possibile utilizzare tre funzioni per connettersi:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

Per altre informazioni su come stabilire connessioni a un'origine dati, incluse le varie opzioni della stringa di connessione disponibili, vedere Uso delle parole chiave della stringa di connessione conSQL Server Native Client .

SQLConnect

SQLConnect è la funzione di connessione più semplice. La funzione accetta tre parametri: un nome di origine dati, un ID utente e una password. Usare SQLConnect quando questi tre parametri contengono tutte le informazioni necessarie per connettersi al database. A tale scopo, compilare un elenco di origini dati usando SQLDataSources. richiedere all'utente un'origine dati, un ID utente e una password. e quindi chiamare SQLConnect.

SQLConnect presuppone che il nome dell'origine dati, l'ID utente e la password siano sufficienti per connettersi a un'origine dati e che l'origine dati ODBC contenga tutte le altre informazioni necessarie al driver ODBC per stabilire la connessione. A differenza di SQLDriverConnect e SQLBrowseConnect, SQLConnect non usa una stringa di connessione.

SQLDriverConnect

SQLDriverConnect viene usato quando sono necessarie più informazioni rispetto al nome dell'origine dati, all'ID utente e alla password. Uno dei parametri di SQLDriverConnect è una stringa di connessione contenente informazioni specifiche del driver. È possibile usare SQLDriverConnect anziché SQLConnect per i motivi seguenti:

  • Per immettere informazioni specifiche del driver in fase di connessione.

  • Per specificare che il driver deve richiedere all'utente le informazioni di connessione.

  • Per connettersi senza utilizzare un'origine dati ODBC.

La stringa di connessione SQLDriverConnect contiene una serie di coppie parola chiave-valore che specificano tutte le informazioni di connessione supportate da un driver ODBC. Ogni driver supporta le parole chiave ODBC standard (DSN, FILEDSN, DRIVER, UID, PWD e SAVEFILE) oltre a parole chiave specifiche del driver per tutte le informazioni di connessione supportate dal driver stesso. SQLDriverConnect può essere usato per connettersi senza un'origine dati. Ad esempio, un'applicazione progettata per stabilire una connessione "senza DSN" a un'istanza di può chiamare SQLDriverConnect con una stringa di connessione che definisce l'ID di accesso, la password, la libreria di rete, il nome del server a cui connettersi e il database predefinito SQL Server da usare.

Quando si usa SQLDriverConnect, sono disponibili due opzioni per richiedere all'utente le informazioni di connessione necessarie:

  • Finestra di dialogo dell'applicazione

    È possibile creare una finestra di dialogo dell'applicazione che richiede informazioni di connessione e quindi chiama SQLDriverConnect con un handle di finestra NULL e DriverCompletion impostato su SQL_DRIVER_NOPROMPT. Queste impostazioni impediscono di aprire la finestra di dialogo del driver ODBC. Questo metodo viene utilizzato quando è importante controllare l'interfaccia utente dell'applicazione.

  • Finestra di dialogo del driver

    È possibile codificare l'applicazione per passare un handle di finestra valido a SQLDriverConnect e impostare il parametro DriverCompletion su SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT o SQL_DRIVER_COMPLETE_REQUIRED. Il driver genera quindi una finestra di dialogo per richiedere all'utente le informazioni di connessione. Questo metodo semplifica il codice dell'applicazione.

SQLBrowseConnect

SQLBrowseConnect, ad esempio SQLDriverConnect, usa una stringa di connessione. Tuttavia, usando SQLBrowseConnect, un'applicazione può costruire una stringa di connessione completa in modo iterativo con l'origine dati in fase di esecuzione. In questo modo, l'applicazione può eseguire due operazioni:

  • Compilare finestre di dialogo proprie per richiedere tali informazioni, mantenendo in tal modo il controllo sull'interfaccia utente.

  • Esplorare il sistema per individuare origini dati che possano essere utilizzate da un driver specifico, possibilmente in diversi passaggi.

    L'utente, ad esempio, potrebbe esplorare innanzitutto la rete per individuare i server e, dopo averne scelto uno, esplorare il server per individuare i database accessibili dal driver.

Quando SQLBrowseConnect completa una connessione riuscita, restituisce una stringa di connessione che può essere usata nelle chiamate successive a SQLDriverConnect.

Il driver ODBC di Native Client restituisce sempre SQL Server SQL_SUCCESS_WITH_INFO in sqlconnect, SQLDriverConnect o SQLBrowseConnect. Quando un'applicazione ODBC chiama SQLGetDiagRec dopo SQL_SUCCESS_WITH_INFO, può ricevere i messaggi seguenti:

5701
Indica che SQL Server ha inserito il contesto dell'utente nel database predefinito specificato nell'origine dati o nel database predefinito specificato per l'ID di accesso utilizzato nella connessione se l'origine dati non dispone di un database predefinito.

5703
Indica la lingua utilizzata nel server.

Nell'esempio seguente viene riportato il messaggio restituito in una connessione eseguita correttamente dall'amministratore di sistema:

szSqlState = "01000", *pfNativeError = 5701,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed database context to 'pubs'."  
szSqlState = "01000", *pfNativeError = 5703,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed language setting to 'us_english'."  

È possibile ignorare i messaggi 5701 e 5703, in quanto di natura esclusivamente informativa. Non è consigliabile, tuttavia, ignorare un codice restituito di SQL_SUCCESS_WITH_INFO, in quanto è possibile che vengano generati messaggi diversi da 5701 o 5703. Ad esempio, se un driver si connette a un server che esegue un'istanza di con stored procedure del catalogo non aggiornato, uno degli errori restituiti tramite SQL Server SQLGetDiagRec dopo un SQL_SUCCESS_WITH_INFO è:

SqlState:   01000  
pfNative:   0  
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC  
            catalog stored procedures installed on server  
            my65server are version 06.50.0193; version 07.00.0205  
            or later is required to ensure proper operation.  
            Please contact your system administrator."  

La funzione di gestione degli errori di un'applicazione per le connessioni deve SQL Server chiamare SQLGetDiagRec finché non restituisce SQL_NO_DATA. Deve quindi agire su tutti i messaggi diversi da quelli con codice pfNative 5701 o 5703.

Vedere anche

Comunicazione con SQL Server (ODBC)