Erstellen einer SQL Server Native Client-ODBC-Treiberanwendung

Die ODBC-Architektur verfügt über vier Komponenten, die die folgenden Funktionen ausführen.

Komponente

Funktion

Anwendung

Ruft ODBC-Funktionen auf, um mit einer ODBC-Datenquelle zu kommunizieren, sendet SQL-Anweisungen und verarbeitet Resultsets.

Treiber-Manager

Verwaltet die Kommunikation zwischen einer Anwendung und allen von der Anwendung verwendeten ODBC-Treibern.

Treiber

Verarbeitet alle ODBC-Funktionsaufrufe von der Anwendung, stellt eine Verbindung zu einer Datenquelle her, übergibt SQL-Anweisungen von der Anwendung an die Datenquelle und gibt Ergebnisse an die Anwendung zurück. Bei Bedarf übersetzt der Treiber ODBC SQL-Code von der Anwendung in den von der Datenquelle verwendeten systemeigenen SQL-Code.

Datenquelle

Enthält alle Informationen, die ein Treiber für den Zugriff auf eine bestimmte Instanz der Daten in einem DBMS benötigt.

Eine Anwendung, die den SQL Server Native Client ODBC-Treiber für die Kommunikation mit einer Instanz von SQL Server verwendet, führt die folgenden Tasks aus:

  • Herstellen einer Verbindung mit einer Datenquelle

  • Senden von SQL-Anweisungen an die Datenquelle

  • Verarbeiten der Ergebnisse von Anweisungen von der Datenquelle

  • Verarbeiten von Fehlern und Meldungen

  • Beenden der Verbindung mit der Datenquelle

Eine komplexere, für den SQL Server Native Client ODBC-Treiber geschriebene Anwendung kann zusätzlich die folgenden Tasks ausführen:

  • Verwenden von Cursorn, um die Position in einem Resultset zu bestimmen

  • Anfordern von Commit- oder Rollbackvorgängen zur Steuerung von Transaktionen

  • Ausführen von verteilten Transaktionen, an denen zwei oder mehr Server beteiligt sind

  • Ausführen von gespeicherten Prozeduren auf dem Remoteserver

  • Aufrufen von Katalogfunktionen für die Abfrage der Attribute eines Resultsets

  • Durchführen von Massenkopiervorgängen

  • Verwalten großer Datenvorgänge (varchar(max)-, nvarchar(max)- und varbinary(max)-Spalten)

  • Verwenden einer Logik zum Wiederherstellen einer Verbindung, um bei der Konfiguration der Datenbankspiegelung ein Failover zu ermöglichen

  • Protokollieren von Leistungsdaten und Abfragen mit langer Ausführungszeit

Um ODBC-Funktionen aufrufen können, muss eine C- oder C++-Anwendung die Headerdateien sql.h, sqlext.h und sqltypes.h enthalten. Um API-Funktionen des ODBC-Installationsprogramms aufrufen zu können, muss eine Anwendung die Headerdatei odbcinst.h enthalten. Eine ODBC-Unicode-Anwendung muss die Headerdatei sqlucode.h enthalten. ODBC-Anwendungen müssen mit der Datei odbc32.lib verknüpft werden. ODBC-Anwendungen, die API-Funktionen des ODBC-Installationsprogramms aufrufen, müssen mit der Datei odbccp32.lib verknüpft werden. Diese Dateien sind im Windows Platform SDK enthalten.

Viele ODBC-Treiber, wie der SQL Server Native Client ODBC-Treiber, stellen treiberspezifische ODBC-Erweiterungen bereit. Damit die für den SQL Server Native Client ODBC-Treiber spezifischen Erweiterungen genutzt werden können, muss eine Anwendung die Headerdatei sqlncli.h enthalten. Diese Headerdatei enthält Folgendes:

  • Für den SQL Server Native Client ODBC-Treiber spezifische Verbindungsattribute

  • Für den SQL Server Native Client ODBC-Treiber spezifische Anweisungsattribute

  • Für den SQL Server Native Client ODBC-Treiber spezifische Spaltenattribute

  • SQL Server-spezifische Datentypen

  • SQL Server-spezifische, benutzerdefinierte Datentypen

  • Für den SQL Server Native Client ODBC-Treiber spezifische SQLGetInfo-Typen.

  • Für den SQL Server Native Client ODBC-Treiber spezifische Diagnosefelder

  • Für SQL Server spezifische, dynamische Diagnosefunktionscodes

  • C/C++-Definitionen für SQL Server-spezifische, systemeigene C-Datentypen (die zurückgegeben werden, wenn Spalten an den C-Datentyp SQL_C_BINARY gebunden werden).

  • Typdefinition für die SQLPERF-Datenstruktur

  • Massenkopiermakros und Prototypen zur Unterstützung von APIs für das Massenkopieren über eine ODBC-Verbindung

  • Aufrufen der API-Funktionen für verteilte Abfragemetadaten für Listen mit verknüpften Servern und den zugehörigen Katalogen

Eine ODBC-Anwendung in C oder C++, die die Massenkopierfunktion des SQL Server Native Client ODBC-Treibers verwendet, muss mit der Datei sqlncli10.lib verknüpft werden. Anwendungen, die die API-Funktionen für verteilte Abfragemetadaten aufrufen, müssen ebenfalls mit der Datei sqlncli10.lib verknüpft werden. Die Dateien sqlncli.h und sqlncli10.lib werden zusammen mit den Tools für SQL Server-Entwickler verteilt. Die SQL Server-Verzeichnisse Include und Lib müssen sich wie im folgenden Beispiel in den Verzeichnissen INCLUDE und LIB des Compilers befinden:

LIB=c:\Program Files\Microsoft Data Access SDK 2.8\Libs\x86\lib;C:\Program Files\Microsoft SQL Server\100\Tools\SDK\Lib;
INCLUDE=c:\Program Files\Microsoft Data Access SDK 2.8\inc;C:\Program Files\Microsoft SQL Server\100\Tools\SDK\Include;

Ob es erforderlich ist, dass bei der Anwendung mehrere ODBC-Aufrufe gleichzeitig ausstehen können, ist eine Entwurfsentscheidung, die früh im Prozess der Erstellung einer Anwendung getroffen werden muss. Es gibt zwei Methoden zur Unterstützung von mehreren gleichzeitigen ODBC-Aufrufen. Diese werden im letzten Thema dieses Abschnitts beschrieben. Weitere Informationen finden Sie in der ODBC Programmer's Reference.