Aktualisieren einer Anwendung von MDAC auf SQL Server Native Client

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Wichtig

Der SQL Server Native Client (häufig abgekürzt mit SNAC) wurde aus SQL Server 2022 (16.x) und SQL Server Management Studio 19 (SSMS) entfernt. 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. Verwenden Sie in Zukunft den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL) oder den neuesten Microsoft ODBC Driver for SQL Server. Informationen zu SQLNCLI, das als Komponente der SQL Server Datenbank-Engine (Versionen 2012 bis 2019) ausgeliefert wird, finden Sie in dieser Ausnahme für den Supportlebenszyklus.

Es gibt eine Reihe von Unterschieden zwischen SQL Server Native Client und Microsoft Data Access Components (MDAC; beginnend mit Windows Vista werden die Datenzugriffskomponenten jetzt als Windows Data Access Components oder Windows DAC bezeichnet). Obwohl beide systemeigenen Datenzugriff auf SQL Server-Datenbanken bieten, wurde SQL Server Native Client speziell entwickelt, um die neuen Features von SQL Server 2005 (9.x) verfügbar zu machen, während gleichzeitig die Abwärtskompatibilität mit früheren Versionen Standard.

Die Informationen in diesem Thema helfen, Ihre MDAC-Anwendung (oder Windows DAC) mit der Version von SQL Server Native Client zu aktualisieren, die in SQL Server 2005 (9.x) enthalten war. Informationen zum Aktuellen dieser Anwendung mit der Version von SQL Server Native Client, die in SQL Server ausgeliefert wurde, finden Sie unter Aktualisieren einer Anwendung aus SQL Server 2005 Native Client.

Hinweis

SQL Server Native Client wurde aus SQL Server 2022 (16.x) entfernt.

Obwohl MDAC Komponenten für die Verwendung von OLE DB-, ODBC- und ActiveX-Datenobjekten (ADO) enthält, implementiert SQL Server Native Client nur OLE DB und ODBC (obwohl ADO auf die Funktionalität von SQL Server Native Client zugreifen kann).

SQL Server Native Client und MDAC unterscheiden sich in den anderen folgenden Bereichen:

  • Benutzer, die ADO für den Zugriff auf einen SQL Server Native Client-Anbieter verwenden, finden möglicherweise weniger Filterfunktionen als beim Zugriff auf einen SQL OLE DB-Anbieter.

  • Wenn eine ADO-Anwendung SQL Server Native Client verwendet und versucht, eine berechnete Spalte zu aktualisieren, wird ein Fehler gemeldet. Mit MDAC wurde das Update akzeptiert, jedoch ignoriert.

  • SQL Server Native Client ist eine einzelne eigenständige DLL-Datei (Dynamic Link Library). Die öffentlich verfügbaren Schnittstellen wurden auf ein Minimum reduziert, um sowohl die Verteilung zu erleichtern als auch die Sicherheitsrisiken einzuschränken.

  • Es werden nur OLE DB und ODBC-Schnittstellen unterstützt.

  • Die OLE DB-Anbieter- und ODBC-Treibernamen von SQL Server Native Client unterscheiden sich von denen, die mit MDAC verwendet werden.

  • Benutzerfreundliche Funktionen, die von MDAC-Komponenten bereitgestellt werden, stehen bei Verwendung von SQL Server Native Client zur Verfügung. Dazu gehören u. a.: Verbindungspooling, ADO-Unterstützung und Clientcursorunterstützung. Wenn eines dieser Features verwendet wird, stellt SQL Server Native Client nur Datenbankkonnektivität zur Auswahl. MDAC stellt Funktionen wie Ablaufverfolgung, Verwaltungssteuerelemente und Leistungsindikatoren bereit.

  • Anwendungen können OLE DB-Kerndienste mit SQL Server Native Client verwenden. Wenn Sie jedoch das OLE DB-Cursormodul verwenden, sollten sie die Datentypkompatibilitätsoption verwenden, um mögliche Probleme zu vermeiden, die auftreten können, da das Cursormodul keine Kenntnisse über die neuen SQL Server 2005 -Datentypen (9.x) hat.

  • SQL Server Native Client unterstützt den Zugriff auf frühere SQL Server-Datenbanken.

  • SQL Server Native Client enthält keine XML-Integration. SQL Server Native Client unterstützt SELECT ... FÜR XML-Abfragen, aber keine anderen XML-Funktionen unterstützt. Sql Server Native Client unterstützt jedoch den xml-Datentyp, der in SQL Server 2005 (9.x) eingeführt wurde.

  • SQL Server Native Client unterstützt die Konfiguration clientseitiger Netzwerkbibliotheken nur mit Verbindungszeichenfolge Attributen. Wenn Sie eine umfassendere Netzwerkbibliothekskonfiguration benötigen, müssen Sie SQL Server-Konfigurations-Manager verwenden.

  • SQL Server Native Client ist nicht mit odbcbcp.dll kompatibel. Anwendungen, die sowohl ODBC- als auch bcp-APIs verwenden, müssen neu erstellt werden, um eine Verknüpfung mit sqlncli11.lib herstellen zu können, um SQL Server Native Client verwenden zu können.

  • SQL Server Native Client wird vom Microsoft OLE DB-Anbieter für ODBC (MSDASQL) nicht unterstützt. Wenn Sie den MDAC SQLODBC-Treiber mit MSDASQL oder MDAC SQLODBC-Treiber mit ADO verwenden, verwenden Sie OLE DB in SQL Server Native Client..

  • Bei MDAC-Verbindungszeichenfolgen ist für das Trusted_Connection-Schlüsselwort ein boolescher Wert (true) zulässig. Ein SQL Server Native Client Verbindungszeichenfolge muss "Ja" oder "Nein" verwenden.

  • An Warnungen und Fehlern wurden geringfügige Änderungen vorgenommen. Warnungen und Fehler, die vom Server zurückgegeben werden, behalten nun den gleichen Schweregrad bei, wenn sie an SQL Server Native Client übergeben werden. Sie sollten sicherstellen, dass die Anwendung gründlich getestet wurde, wenn Sie auf das Abfangen bestimmter Warnungen und Fehler angewiesen sind.

  • SQL Server Native Client hat eine strengere Fehlerüberprüfung als MDAC, was bedeutet, dass sich einige Anwendungen, die nicht streng den ODBC- und OLE DB-Spezifikationen entsprechen, anders verhalten können. Der SQLOLEDB-Anbieter erzwingte z. B. nicht die Regel, die Parameternamen für Ergebnisparameter mit '@' beginnen müssen, der OLE DB-Anbieter des SQL Server Native Client jedoch.

  • Sql Server Native Client verhält sich anders als MDAC in Bezug auf fehlgeschlagene Verbindungen. MDAC gibt z. B. zwischengespeicherte Eigenschaftswerte für eine fehlgeschlagene Verbindung zurück, während SQL Server Native Client einen Fehler bei der aufrufenden Anwendung meldet.

  • SQL Server Native Client generiert keine Visual Studio Analyzer-Ereignisse, sondern generiert stattdessen Windows-Ablaufverfolgungsereignisse.

  • SQL Server Native Client kann nicht mit perfmon verwendet werden. Perfmon ist ein Windows-Tool, das nur mit DSNs verwendet werden kann, die den im Lieferumfang von Windows enthaltenen MDAC SQLODBC-Treiber verwenden.

  • Wenn SQL Server Native Client mit SQL Server 2005 (9.x) und höheren Versionen verbunden ist, wird der Serverfehler 16947 als SQL_ERROR zurückgegeben. Dieser Fehler tritt auf, wenn ein positioniertes Update oder Löschen eine Zeile nicht aktualisieren oder löschen kann. Mit MDAC wird beim Herstellen einer Verbindung mit einer Version von SQL Server der Serverfehler 16947 als Warnung (SQL_SUCCESS_WITH_INFO) zurückgegeben.

  • SQL Server Native Client implementiert die IDBDataSourceAdmin-Schnittstelle , eine optionale OLE DB-Schnittstelle, die zuvor nicht implementiert wurde, sondern nur die CreateDataSource-Methode dieser optionalen Schnittstelle implementiert wird. Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

  • Der OLE DB-Anbieter von SQL Server Native Client gibt Synonyme in den TABLES- und TABLE_INFO Schema-Rowsets zurück, wobei TABLE_TYPE auf SYNONYM festgelegt sind.

  • Rückgabewerte des Datentyps varchar(max), nvarchar(max), varbinary(max), xml, udt oder andere große Objekttypen können nicht an Clientversionen vor SQL Server 2005 (9.x) zurückgegeben werden. Wenn Sie diese Typen als Rückgabewerte verwenden möchten, müssen Sie SQL Server Native Client verwenden.

  • MDAC ermöglicht die Ausführung der folgenden Anweisungen zu Beginn manueller und impliziter Transaktionen, aber SQL Server Native Client nicht. Die Anweisungen müssen im Autocommitmodus ausgeführt werden.

    • Alle Volltextvorgänge (Index- und Katalog-DDL)

    • Alle Datenbankvorgänge (CREATE DATABASE, ALTER DATABASE, DROP DATABASE)

    • Neu konfigurieren

    • Shutdown

    • Beenden

    • Backup

  • Wenn MDAC-Anwendungen eine Verbindung mit SQL Server herstellen, werden die in SQL Server 2005 (9.x) eingeführten Datentypen als SQL Server 2000 (8.x)-kompatible Datentypen angezeigt, wie in der folgenden Tabelle dargestellt.

    SQL Server 2005-Typ SQL Server 2000
    varchar(max) text
    nvarchar(max) ntext
    varbinary(max) image
    udt varbinary
    xml ntext

    Diese Typzuordnung beeinflusst die für Spaltenmetadaten zurückgegebenen Werte. Beispielsweise hat eine Textspalte eine maximale Größe von 2.147.483.647, aber SQL Server Native Client ODBC meldet die maximale Größe von varchar(max) -Spalten als SQL_SS_LENGTH_UNLIMITED, und SQL Server Native Client OLE DB meldet je nach Plattform die maximale Größe von varchar(max) Spalten als 2.147.483.647 oder -1.

  • Sql Server Native Client ermöglicht Mehrdeutigkeit in Verbindungszeichenfolge s (z. B. können einige Schlüsselwort (keyword) mehr als einmal angegeben werden, und widersprüchliche Schlüsselwort (keyword) können aus Gründen der Abwärtskompatibilität mit auflösungsbasierter Auflösung zulässig sein. Zukünftige Versionen von SQL Server Native Client lassen möglicherweise keine Mehrdeutigkeit in Verbindungszeichenfolge s zu. Es empfiehlt sich, anwendungen so zu ändern, dass SQL Server Native Client verwendet wird, um abhängigkeiten von Verbindungszeichenfolge Mehrdeutigkeit zu vermeiden.

  • Wenn Sie einen ODBC- oder OLE DB-Aufruf zum Starten von Transaktionen verwenden, gibt es einen Unterschied im Verhalten zwischen SQL Server Native Client und MDAC; Transaktionen beginnen sofort mit SQL Server Native Client, aber Transaktionen beginnen nach dem ersten Datenbankzugriff mithilfe von MDAC. Dies kann sich auf das Verhalten gespeicherter Prozeduren und Batches auswirken, da @@TRANCOUNT bei SQL Server nach Beenden der Ausführung eines Batches oder einer gespeicherten Prozedur unverändert gegenüber dem Startzeitpunkt des Batches oder der gespeicherten Prozedur sein muss.

  • Bei SQL Server Native Client bewirkt ITransactionLocal::BeginTransaction, dass eine Transaktion sofort gestartet wird. Mit MDAC wurde der Transaktionsstart verzögert, bis die Anwendung eine Anweisung ausgeführt hat, die eine Transaktion im impliziten Transaktionsmodus erforderte. Weitere Informationen finden Sie unter SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • Möglicherweise treten Fehler auf, wenn Sie sql Server Native Client-Treiber mit System.Data.Odbc verwenden, um auf einen SQL Server-Servercomputer zuzugreifen, der neue, SQL Server-spezifische Datentypen oder Features verfügbar macht. System.Data.Odbc stellt eine generische ODBC-Implementierung bereit und macht anschließend keine anbieterspezifischen Funktionen oder Erweiterungen verfügbar. (Der SQL Server Native Client-Treiber wird aktualisiert, um die neuesten SQL Server-Features nativ zu unterstützen.) Um dieses Problem zu umgehen, können Sie entweder zu MDAC rückgängig machen oder zu System.Data.SqlClient migrieren.

Sowohl SQL Server Native Client als auch MDAC unterstützen die Lesezugriffstransaktionsisolation mithilfe der Zeilenversionsverwaltung, aber nur SQL Server Native Client unterstützt Momentaufnahme Transaktionsisolation. (Programmiertechnisch ausgedrückt bedeutet dies, dass die Read Committed-Transaktionsisolation mit Zeilenversionsverwaltung gleichbedeutend mit einer Read Committed-Transaktion ist.)

Weitere Informationen

Erstellen von Anwendungen mit SQL Server Native Client