Erstellen einer Treiberanwendung
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Wichtig
SQL Server Native Client (SNAC) wird nicht ausgeliefert mit:
- SQL Server 2022 (16.x) und höhere Versionen
- SQL Server Management Studio 19 und spätere Versionen
Der SQL Server Native Client (SQLNCLI oder SQLNCLI11) und der Microsoft OLE DB-Legacyanbieter für SQL Server (SQLOLEDB) werden für neue Anwendungsentwicklungen nicht empfohlen.
Für neue Projekte verwenden Sie einen der folgenden Treiber:
Informationen zu SQLNCLI, das als Komponente der SQL Server-Datenbank-Engine (Versionen 2012 bis 2019) verfügbar ist, finden Sie in dieser Ausnahme für den Supportlebenszyklus.
Die ODBC-Architektur verfügt über vier Komponenten, die die folgenden Funktionen ausführen.
Komponente | Funktion |
---|---|
Application | 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 verwendet, um mit einer Instanz von SQL Server zu kommunizieren, führt die folgenden Aufgaben 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 Anwendung, die für den SQL Server Native Client ODBC-Treiber geschrieben wurde, kann auch die folgenden Aufgaben ausführen:
Verwenden von Cursorn, um die Position in einem Resultset zu bestimmen
Anforderung 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
Ausführen von Massenkopievorgängen
Verwalten von Großdatenvorgängen (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, einschließlich des SQL Server Native Client ODBC-Treibers, bieten treiberspezifische ODBC-Erweiterungen an. Um sql Server Native Client ODBC-treiberspezifische Erweiterungen zu nutzen, sollte eine Anwendung die Sqlncli.h-Headerdatei enthalten. Diese Headerdatei enthält Folgendes:
SQL Server Native Client ODBC-treiberspezifische Verbindungsattribute.
SQL Server Native Client ODBC-Treiberspezifische Anweisungsattribute.
SQL Server Native Client ODBC-treiberspezifische Spaltenattribute.
SQL Server-spezifische Datentypen.
SQL Server-spezifische benutzerdefinierte Datentypen.
SQL Server Native Client ODBC-treiberspezifische SQLGetInfo-Typen .
SQL Server Native Client ODBC-Treiberdiagnosefelder.
SQL Server-spezifische dynamische Diagnosefunktionscodes.
C/C++-Typdefinitionen für SQL Server-spezifische systemeigene C-Datentypen (zurückgegeben, wenn Spalten, die an den C-Datentyp SQL_C_BINARY gebunden sind).
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
Jede C- oder C++-ODBC-Anwendung, die das Massenkopiefeature des SQL Server Native Client ODBC-Treibers verwendet, muss mit der Sqlncli11.lib-Datei verknüpft sein. Anwendungen, die die API-Funktionen für verteilte Abfragemetadaten aufrufen, müssen ebenfalls mit der Datei sqlncli11.lib verknüpft werden. Die Dateien "sqlncli.h" und "sqlncli11.lib" werden als Teil der SQL Server-Entwicklertools verteilt. Die SQL Server Include- und Lib-Verzeichnisse sollten sich wie folgt in den INCLUDE- und LIB-Pfaden 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 mehrerer gleichzeitiger ODBC-Aufrufe, die in den verbleibenden Themen dieses Abschnitts beschrieben werden. Weitere Informationen finden Sie in der ODBC-Programmierreferenz.