Condividi tramite


Connessione a un'origine dati (ODBC)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

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 sull'esecuzione di connessioni a un'origine dati, incluse le varie opzioni di stringa di connessione disponibili, vedere Uso delle parole chiave delle stringhe di connessione con SQL 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 un nome origine dati, un ID utente e una 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 un 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 è un 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.

L'stringa di connessione SQLDriverConnect contiene una serie di coppie 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 creare una connessione "senza DSN" a un'istanza di SQL Server può chiamare SQLDriverConnect con un 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 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 chiamare 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 un'applicazione completa stringa di connessione iterativamente 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, restituisce un stringa di connessione che può essere usato nelle chiamate successive a SQLDriverConnect.

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

5701
Indica che SQL Server inserisce il contesto dell'utente nel database predefinito definito nell'origine dati o nel database predefinito definito per l'ID di accesso usato nella connessione se l'origine dati non ha 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 SQL Server con stored procedure del catalogo obsolete, uno degli errori restituiti tramite 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 di SQL Server deve chiamare SQLGetDiagRec fino a quando non restituisce SQL_NO_DATA. Deve quindi agire su tutti i messaggi diversi da quelli con un codice pfNative 5701 o 5703.

Vedi anche

Comunicazione con SQL Server (ODBC)