Herstellen einer Verbindung mit einer Datenquelle (ODBC)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 Optionen für Verbindungszeichenfolgen, finden Sie unter Verwenden von Verbindungszeichenfolgenschlüsselwö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 hierzu mithilfe von SQLDataSources eine Liste von Datenquellen. den Benutzer zur Eingabe einer Datenquelle, einer Benutzer-ID und eines Kennworts auffordern; 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 zum Herstellen der Verbindung benötigt. 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 von einem ODBC-Treiber unterstützten Verbindungsinformationen angeben. 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 verwendet werden, um eine Verbindung ohne Datenquelle herzustellen. Beispielsweise kann eine Anwendung, die eine "DSN-weniger"-Verbindung mit einer Instanz von SQL Server herstellen soll, SQLDriverConnect mit einer Verbindungszeichenfolge aufrufen, die die Anmelde-ID, das Kennwort, die Netzwerkbibliothek, den Servernamen für die Verbindung und die zu verwendende Standarddatenbank definiert.

Wenn Sie SQLDriverConnect verwenden, gibt es zwei Optionen, um den Benutzer zur Eingabe der erforderlichen Verbindungsinformationen aufzufordern:

  • Dialogfeld "Anwendung"

    Sie können ein Anwendungsdialogfeld erstellen, das zur Eingabe von Verbindungsinformationen auffordert, und dann SQLDriverConnect mit einem NULL-Fensterhandle und DriverCompletion auf SQL_DRIVER_NOPROMPT aufruft. 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 so codieren, dass sie ein gültiges Fensterhandle an SQLDriverConnect übergeben und den DriverCompletion-Parameter auf SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT oder SQL_DRIVER_COMPLETE_REQUIRED festlegen. 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, gibt es eine Verbindungszeichenfolge zurück, die für nachfolgende Aufrufe von SQLDriverConnect verwendet werden kann.

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

5701
Gibt an, dass SQL Server den Kontext des Benutzers in die standarddatenbank einfügen, die in der Datenquelle definiert ist, oder in die Standarddatenbank, die für die anmelde-ID definiert ist, die in der Verbindung verwendet wird, 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 beispielsweise ein Treiber eine Verbindung mit einem Server herstellt, auf dem eine Instanz von SQL Server mit veralteten gespeicherten Katalogprozeduren ausgeführt wird, ist einer der Fehler, der über SQLGetDiagRec nach einem SQL_SUCCESS_WITH_INFO zurückgegeben wird:

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. Es sollte dann auf alle anderen Nachrichten als die nachrichten mit einem pfNative-Code von 5701 oder 5703 reagieren.

Weitere Informationen

Kommunikation mit SQL Server (ODBC)