Alocar identificadores e se conectar ao SQL Server (ODBC)

Aplica-se a: SQL Server (todas as versões com suporte) SQL do Azure Banco de Dados Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Para alocar identificadores e se conectar ao SQL Server

  1. Inclua o arquivos de cabeçalho ODBC Sql.h, Sqlext.h, Sqltypes.h.

  2. Inclua o arquivo de cabeçalho específico do SQL Server driver, Odbcss.h.

  3. Chame SQLAllocHandle com um HandleType de SQL_HANDLE_ENV para inicializar o ODBC e alocar um identificador de ambiente.

  4. Chame SQLSetEnvAttr com Atributo definido como SQL_ATTR_ODBC_VERSION e ValuePtr definido como SQL_OV_ODBC3 para indicar que o aplicativo usará chamadas de função de formato ODBC 3.x.

  5. Opcionalmente, chame SQLSetEnvAttr para definir outras opções de ambiente ou chame SQLGetEnvAttr para obter opções de ambiente.

  6. Chame SQLAllocHandle com um HandleType de SQL_HANDLE_DBC para alocar um identificador de conexão.

  7. Opcionalmente, chame SQLSetConnectAttr para definir opções de conexão ou chame SQLGetConnectAttr para obter opções de conexão.

  8. Chame o SQLConnect para usar uma fonte de dados existente para se conectar a SQL Server.

    Ou

    Chame SQLDriverConnect para usar uma cadeia de conexão para se conectar a SQL Server.

    Uma cadeia de conexão de SQL Server completa mínima tem uma das duas formas:

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

    Se a cadeia de conexão não estiver concluída, o SQLDriverConnect poderá solicitar as informações necessárias. Isso é controlado pelo valor especificado para o parâmetro DriverCompletion .

    - ou -

    Chame SQLBrowseConnect várias vezes de forma iterativa para criar a cadeia de conexão e conectar-se a SQL Server.

  9. Opcionalmente, chame SQLGetInfo para obter atributos de driver e comportamento para a fonte de dados SQL Server.

  10. Aloque e use instruções.

  11. Chame o SQLDisconnect para se desconectar do SQL Server e disponibilizar o identificador de conexão para uma nova conexão.

  12. Chame SQLFreeHandle com um HandleType de SQL_HANDLE_DBC para liberar o identificador de conexão.

  13. Chame SQLFreeHandle com um HandleType de SQL_HANDLE_ENV para liberar o identificador de ambiente.

Importante

Quando possível, use a Autenticação do Windows. Se a Autenticação do Windows não estiver disponível, solicite aos usuários que digitem suas credenciais em tempo de execução. Evite armazenar as credenciais em um arquivo. Se for necessário manter as credenciais, criptografe-as com a Win32 crypto API(em inglês).

Exemplo

Este exemplo mostra uma chamada ao SQLDriverConnect para se conectar a uma instância de SQL Server sem exigir uma fonte de dados ODBC existente. Ao passar uma cadeia de conexão incompleta para SQLDriverConnect, isso faz com que o driver ODBC solicite que o usuário insira as informações ausentes.

#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);