Herstellen einer Verbindung mit einer Datenquelle (ODBC)

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

Nach dem Zuweisen der Umgebungs- und Verbindungshandles und dem Festlegen der Verbindungsattribute stellt die Anwendung eine Verbindung zur Datenquelle oder zum Treiber her. Es gibt drei Funktionen, die Sie verwenden können, um eine Verbindung herzustellen:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

Weitere Informationen zum Herstellen von Verbindungen mit einer Datenquelle, einschließlich der verschiedenen verfügbaren Verbindungszeichenfolge Optionen, finden Sie unter Verwenden von Verbindungszeichenfolgenstichwörtern mit SQL Server Native Client.

SQLConnect

SQLConnect ist die einfachste Verbindungsfunktion. Sie akzeptiert drei Parameter: Datenquellenname, Benutzer-ID und Kennwort. Verwenden Sie SQLConnect , wenn diese drei Parameter alle Informationen enthalten, die zum Herstellen einer Verbindung mit der Datenbank erforderlich sind. Erstellen Sie dazu eine Liste von Datenquellen mit SQLDataSources, fordern Sie den Benutzer auf, eine Datenquelle, eine Benutzer-ID und ein Kennwort einzugeben, und rufen Sie dann SQLConnect auf.

SQLConnect geht davon aus, dass ein Datenquellenname, eine Benutzer-ID und ein Kennwort ausreichen, um eine Verbindung mit einer Datenquelle herzustellen und dass die ODBC-Datenquelle alle anderen Informationen enthält, die der ODBC-Treiber benötigt, um die Verbindung herzustellen. Im Gegensatz zu SQLDriverConnect und SQLBrowseConnect verwendet SQLConnect keine Verbindungszeichenfolge.

SQLDriverConnect

SQLDriverConnect wird verwendet, wenn mehr Informationen als der Datenquellenname, die Benutzer-ID und das Kennwort erforderlich sind. Einer der Parameter für SQLDriverConnect ist eine Verbindungszeichenfolge, die treiberspezifische Informationen enthält. Sie können SQLDriverConnect anstelle von SQLConnect aus den folgenden Gründen verwenden:

  • Um zum Zeitpunkt des Verbindungsaufbaus treiberspezifische Informationen anzugeben.

  • Um anzugeben, dass der Treiber den Benutzer zur Eingabe von Verbindungsinformationen auffordert.

  • Um eine Verbindung herzustellen, ohne eine ODBC-Datenquelle zu verwenden.

Die SQLDriverConnect-Verbindungszeichenfolge enthält eine Reihe von Schlüsselwort-Wert-Paaren, die alle Verbindungsinformationen angeben, die von einem ODBC-Treiber unterstützt werden. Bei allen vom Treiber unterstützten Verbindungsinformationen unterstützt jeder Treiber über die treiberspezifischen Schlüsselwörter hinaus die standardmäßigen ODBC-Schlüsselwörter (DSN, FILEDSN, DRIVER, UID, PWD und SAVEFILE). SQLDriverConnect kann zum Herstellen einer Verbindung ohne Datenquelle verwendet werden. Eine Anwendung, die so konzipiert ist, dass eine "DSN-less"-Verbindung mit einer Instanz von SQL Server hergestellt wird, kann z. B. SQLDriverConnect mit einer Verbindungszeichenfolge aufrufen, die die Anmelde-ID, das Kennwort, die Netzwerkbibliothek, den Servernamen für die Verbindung herstellen soll, und die zu verwendende Standarddatenbank definiert.

Bei Verwendung von SQLDriverConnect gibt es zwei Optionen, um den Benutzer nach erforderlichen Verbindungsinformationen aufzufordern:

  • Dialogfeld "Anwendung"

    Sie können ein Anwendungsdialogfeld erstellen, das zur Eingabe von Verbindungsinformationen auffordert , und dann SQLDriverConnect mit einem NULL-Fensterhandle aufruft und "DriverCompletion " auf SQL_DRIVER_NOPROMPT festgelegt ist. Diese Parametereinstellungen verhindern, dass der ODBC-Treiber ein eigenes Dialogfeld öffnet. Diese Methode wird verwendet, wenn die Benutzeroberfläche der Anwendung gesteuert werden muss.

  • Dialogfeld "Filter"

    Sie können die Anwendung codieren, um ein gültiges Fensterhandle an SQLDriverConnect zu übergeben und den DriverCompletion-Parameter auf SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT oder SQL_DRIVER_COMPLETE_REQUIRED festzulegen. Der Treiber generiert dann ein Dialogfeld, um den Benutzer zur Eingabe von Verbindungsinformationen aufzufordern. Diese Methode vereinfacht den Anwendungscode.

SQLBrowseConnect

SQLBrowseConnect verwendet wie SQLDriverConnect eine Verbindungszeichenfolge. Mithilfe von SQLBrowseConnect kann eine Anwendung jedoch eine vollständige Verbindungszeichenfolge iterativ mit der Datenquelle zur Laufzeit erstellen. Dadurch kann die Anwendung zwei Funktionen erfüllen:

  • Erstellen eigener Dialogfelder, um zur Eingabe dieser Informationen aufzufordern, wodurch die Kontrolle über die Benutzeroberfläche beibehalten wird.

  • Durchsuchen des Systems nach Datenquellen, die von einem bestimmten Treiber verwendet werden können. Dies sollte nach Möglichkeit in mehreren Schritten erfolgen.

    Beispielsweise kann der Benutzer zunächst das Netzwerk nach Servern durchsuchen und, sobald er einen Server ausgewählt hat, diesen nach Datenbanken durchsuchen, auf die der Treiber zugreifen kann.

Wenn SQLBrowseConnect eine erfolgreiche Verbindung abgeschlossen hat, wird eine Verbindungszeichenfolge zurückgegeben, die bei nachfolgenden Aufrufen von SQLDriverConnect verwendet werden kann.

Der ODBC-Treiber für SQL Server Native Client gibt immer SQL_SUCCESS_WITH_INFO für eine erfolgreiche SQLConnect-, SQLDriverConnect- oder SQLBrowseConnect-Instanz zurück. Wenn eine ODBC-Anwendung SQLGetDiagRec nach dem Abrufen von SQL_SUCCESS_WITH_INFO aufruft, kann sie die folgenden Meldungen empfangen:

5701
Gibt an, dass SQL Server den Kontext des Benutzers in die standarddatenbank eingibt, die in der Datenquelle definiert ist, oder in der Standarddatenbank, die für die in der Verbindung verwendete Anmelde-ID definiert ist, wenn die Datenquelle nicht über eine Standarddatenbank verfügt.

5703
Gibt die auf dem Server verwendete Sprache an.

Bei einer erfolgreichen Verbindung wird die folgende Meldung vom Systemadministrator zurückgegeben:

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'."  

Sie können die Meldungen 5701 und 5703 ignorieren; sie dienen nur zu Informationszwecken. Den Rückgabecode SQL_SUCCESS_WITH_INFO hingegen sollten Sie nicht ignorieren, da auch andere Meldungen als 5701 oder 5703 zurückgegeben werden können. Wenn ein Treiber beispielsweise eine Verbindung mit einem Server herstellt, auf dem eine Instanz von SQL Server mit veralteten gespeicherten Katalogprozeduren ausgeführt wird, ist einer der Fehler, die über SQLGetDiagRec zurückgegeben werden, nachdem ein SQL_SUCCESS_WITH_INFO lautet:

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."  

Die Fehlerbehandlungsfunktion einer Anwendung für SQL Server-Verbindungen sollte SQLGetDiagRec aufrufen, bis sie SQL_NO_DATA zurückgibt. Sie sollte dann auf andere Nachrichten als die nachrichten mit einem pfNativen Code von 5701 oder 5703 reagieren.

Weitere Informationen

Kommunikation mit SQL Server (ODBC)