Zuordnen von Handles und Herstellen einer Verbindung mit SQL Server (ODBC)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

So ordnen Sie Handles zu und stellen eine Verbindung mit SQL Server her

  1. Schließen Sie die ODBC-Headerdateien Sql.h, Sqlext.h und Sqltypes.h ein.

  2. Schließen Sie die treiberspezifische SQL Server-Headerdatei odbcss.h ein.

  3. Rufen Sie SQLAllocHandle mit einem HandleType von SQL_HANDLE_ENV auf, um ODBC zu initialisieren und ein Umgebungshandle zuzuweisen.

  4. Rufen Sie SQLSetEnvAttr mit attributsatz auf SQL_ATTR_ODBC_VERSION und ValuePtr auf SQL_OV_ODBC3, um anzugeben, dass die Anwendung ODBC 3.x-Format-Funktionsaufrufe verwendet.

  5. Rufen Sie optional SQLSetEnvAttr auf, um andere Umgebungsoptionen festzulegen, oder rufen Sie SQLGetEnvAttr auf, um Umgebungsoptionen abzurufen.

  6. Rufen Sie SQLAllocHandle mit einem HandleType von SQL_HANDLE_DBC auf, um ein Verbindungshandle zuzuweisen.

  7. Rufen Sie optional SQLSetConnectAttr auf, um Verbindungsoptionen festzulegen, oder rufen Sie SQLGetConnectAttr auf, um Verbindungsoptionen abzurufen.

  8. Rufen Sie SQLConnect auf, um eine vorhandene Datenquelle zum Herstellen einer Verbindung mit SQL Server zu verwenden.

    Oder

    Rufen Sie SQLDriverConnect auf, um eine Verbindungszeichenfolge zum Herstellen einer Verbindung mit SQL Server zu verwenden.

    Eine mindestens vollständige SQL Server-Verbindungszeichenfolge weist eine von zwei Formen auf:

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

    Wenn die Verbindungszeichenfolge nicht abgeschlossen ist, kann SQLDriverConnect die erforderlichen Informationen anfordern. Dies wird durch den für den DriverCompletion-Parameter angegebenen Wert gesteuert.

    - oder -

    Rufen Sie SQLBrowseConnect mehrmals iterativ auf, um die Verbindungszeichenfolge zu erstellen und eine Verbindung mit SQL Server herzustellen.

  9. Rufen Sie optional SQLGetInfo auf, um Treiberattribute und -verhalten für die SQL Server-Datenquelle abzurufen.

  10. Ordnen Sie Anweisungen zu und verwenden Sie sie.

  11. Rufen Sie SQLDisconnect auf, um die Verbindung mit SQL Server zu trennen und den Verbindungshandle für eine neue Verbindung verfügbar zu machen.

  12. Rufen Sie SQLFreeHandle mit einem HandleType von SQL_HANDLE_DBC auf, um den Verbindungshandle frei zu geben.

  13. Rufen Sie SQLFreeHandle mit einem HandleType von SQL_HANDLE_ENV auf, um das Umgebungshandle frei zu geben.

Wichtig

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Wenn die Windows-Authentifizierung nicht verfügbar ist, fordern Sie die Benutzer auf, ihre Anmeldeinformationen zur Laufzeit einzugeben. Die Anmeldeinformationen sollten nicht in einer Datei gespeichert werden. Wenn Sie die Anmeldeinformationen permanent speichern müssen, verschlüsseln Sie sie mit der Win32 Crypto-API.

Beispiel

Dieses Beispiel zeigt einen Aufruf von SQLDriverConnect , um eine Verbindung mit einer Instanz von SQL Server herzustellen, ohne dass eine vorhandene ODBC-Datenquelle erforderlich ist. Durch das Übergeben eines unvollständigen Verbindungszeichenfolge an SQLDriverConnect wird der ODBC-Treiber dazu veranlasst, den Benutzer aufzufordern, die fehlenden Informationen einzugeben.

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