Condividi tramite


Allocare handle e connettersi a SQL Server (ODBC)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

Per allocare handle e connettersi a SQL Server

  1. Includere i file di intestazione ODBC Sql.h, Sqlext.h, Sqltypes.h.

  2. Includere il file di intestazione specifico del driver di SQL Server, Odbcss.h.

  3. Chiamare SQLAllocHandle con handleType di SQL_HANDLE_ENV per inizializzare ODBC e allocare un handle di ambiente.

  4. Chiamare SQLSetEnvAttr con Attribute impostato su SQL_ATTR_ODBC_VERSION e ValuePtr impostato su SQL_OV_ODBC3 per indicare che l'applicazione userà chiamate di funzione ODBC 3.x-format.

  5. Facoltativamente, chiamare SQLSetEnvAttr per impostare altre opzioni di ambiente o chiamare SQLGetEnvAttr per ottenere le opzioni di ambiente.

  6. Chiamare SQLAllocHandle con handleType di SQL_HANDLE_DBC per allocare un handle di connessione.

  7. Facoltativamente, chiamare SQLSetConnectAttr per impostare le opzioni di connessione o chiamare SQLGetConnectAttr per ottenere le opzioni di connessione.

  8. Chiamare SQLConnect per usare un'origine dati esistente per connettersi a SQL Server.

    O

    Chiamare SQLDriverConnect per usare un stringa di connessione per connettersi a SQL Server.

    Un stringa di connessione di SQL Server completo minimo dispone di una delle due forme seguenti:

    DSN=dsn_name;Trusted_connection=yes;  
    DRIVER={SQL Server Native Client 10.0};SERVER=server;Trusted_connection=yes;  
    

    Se il stringa di connessione non è completo, SQLDriverConnect può richiedere le informazioni necessarie. Questo controllo è controllato dal valore specificato per il parametro DriverCompletion .

    o

    Chiamare SQLBrowseConnect più volte in modo iterativo per compilare il stringa di connessione e connettersi a SQL Server.

  9. Facoltativamente, chiamare SQLGetInfo per ottenere gli attributi e il comportamento del driver per l'origine dati di SQL Server.

  10. Allocare e utilizzare le istruzioni.

  11. Chiamare SQLDisconnect per disconnettersi da SQL Server e rendere disponibile l'handle di connessione per una nuova connessione.

  12. Chiamare SQLFreeHandle con handleType di SQL_HANDLE_DBC per liberare l'handle di connessione.

  13. Chiamare SQLFreeHandle con handleType di SQL_HANDLE_ENV per liberare l'handle dell'ambiente.

Importante

Se possibile, usare l'autenticazione di Windows. Se non è disponibile, agli utenti verrà richiesto di immettere le credenziali in fase di esecuzione. Evitare di archiviare le credenziali in un file. Se è necessario rendere persistenti le credenziali, è consigliabile crittografarle usando l'API di crittografia Win32.

Esempio

Questo esempio mostra una chiamata a SQLDriverConnect per connettersi a un'istanza di SQL Server senza richiedere un'origine dati ODBC esistente. Passando un stringa di connessione incompleto a SQLDriverConnect, il driver ODBC chiede all'utente di immettere le informazioni mancanti.

#define MAXBUFLEN   255  
  
SQLHENV      henv = SQL_NULL_HENV;  
SQLHDBC      hdbc1 = SQL_NULL_HDBC;  
SQLHSTMT      hstmt1 = SQL_NULL_HSTMT;  
  
SQLCHAR      ConnStrIn[MAXBUFLEN] =  
         "DRIVER={SQL Server Native Client 10.0};SERVER=MyServer";  
  
SQLCHAR      ConnStrOut[MAXBUFLEN];  
SQLSMALLINT   cbConnStrOut = 0;  
  
// Make connection without data source. Ask that driver   
// prompt if insufficient information. Driver returns  
// SQL_ERROR and application prompts user  
// for missing information. Window handle not needed for  
// SQL_DRIVER_NOPROMPT.  
retcode = SQLDriverConnect(hdbc1,      // Connection handle  
                  NULL,         // Window handle  
                  ConnStrIn,      // Input connect string  
                  SQL_NTS,         // Null-terminated string  
                  ConnStrOut,      // Address of output buffer  
                  MAXBUFLEN,      // Size of output buffer  
                  &cbConnStrOut,   // Address of output length  
                  SQL_DRIVER_PROMPT);