Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 verfügbar zu machen, während gleichzeitig die Abwärtskompatibilität mit früheren Versionen beibehalten wird.
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 enthalten war. Informationen zum Aktuellen dieser Anwendung mit der Version von SQL Server Native Client, die in SQL Server 2014 ausgeliefert wurde, finden Sie unter Aktualisieren einer Anwendung aus SQL Server 2005 Native Client.
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. Bei MDAC wurde das Update akzeptiert, aber ignoriert.
SQL Server Native Client ist eine einzelne eigenständige DLL-Datei (Dynamic Link Library). Die öffentlich zugänglichen Schnittstellen wurden auf ein Minimum beschränkt, sowohl um die Verteilung zu erleichtern als auch die Sicherheitsgefährdung zu begrenzen.
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. Dies umfasst, aber nicht beschränkt auf Folgendes: Verbindungspooling, ADO-Unterstützung und Clientcursorunterstützung. Wenn eines dieser Features verwendet wird, stellt SQL Server Native Client nur Datenbankkonnektivität zur Auswahl. MDAC bietet Funktionen wie Ablaufverfolgung, Verwaltungssteuerelemente und Leistungsindikatoren.
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 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
xmlin SQL Server 2005 eingeführten Datentyp.SQL Server Native Client unterstützt das Konfigurieren clientseitiger Netzwerkbibliotheken nur mit Verbindungszeichenfolgenattributen. Wenn Sie eine umfassendere Netzwerkbibliothekskonfiguration benötigen, müssen Sie SQL Server Configuration Manager verwenden.
SQL Server Native Client ist nicht mit odbcbcp.dllkompatibel. 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..
MDAC-Verbindungszeichenfolgen ermöglichen einen booleschen Wert (
true) für das schlüsselwort Trusted_Connection . Eine SQL Server Native Client-Verbindungszeichenfolge muss oder nicht verwendetyeswerden.Kleinere Änderungen sind bei Warnungen und Fehlern aufgetreten. 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 Sie Ihre Anwendung gründlich getestet haben, wenn Sie von der Abfangung bestimmter Warnungen und Fehler abhängig 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 in Windows enthaltenen MDAC SQLODBC-Treiber verwenden.
Wenn SQL Server Native Client mit SQL Server 2005 und höheren Versionen verbunden ist, wird der Serverfehler 16947 als SQL_ERROR zurückgegeben. Dieser Fehler tritt auf, wenn eine positionierte Aktualisierung oder Löschung eine Zeile nicht aktualisieren oder löschen kann. Bei MDAC beim Herstellen einer Verbindung mit einer beliebigen Version von SQL Server wird 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. Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die derzeit dieses Feature 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 von Datentypen
varchar(max), ,nvarchar(max),varbinary(max),xml,udtoder anderen großen Objekttypen können nicht an Clientversionen zurückgegeben werden, die älter als SQL Server 2005 sind. 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. Sie müssen im AutoCommit-Modus ausgeführt werden.
Alle Volltextvorgänge (Index- und Katalog-DDL)
Alle Datenbankvorgänge (Datenbank erstellen, Datenbank ändern, Dropdatenbank)
Rekonfigurieren
Abschaltung
Töten
Datensicherung
Wenn MDAC-Anwendungen eine Verbindung mit SQL Server herstellen, werden die in SQL Server 2005 eingeführten Datentypen wie in der folgenden Tabelle dargestellt als SQL Server 2000-kompatible Datentypen angezeigt.
SQL Server 2005-Typ SQL Server 2000-Typ varchar(max)textnvarchar(max)ntextvarbinary(max)imageudtvarbinaryxmlntextDiese Typzuordnung wirkt sich auf die Werte aus, die für Spaltenmetadaten zurückgegeben werden. Beispielsweise hat eine
textSpalte eine maximale Größe von 2.147.483.647, aber SQL Server Native Client ODBC meldet die maximale Größe vonvarchar(max)Spalten als SQL_SS_LENGTH_UNLIMITED, und SQL Server Native Client OLE DB meldet je nach Plattform die maximale Größe vonvarchar(max)Spalten als 2.147.483.647 oder -1.SQL Server Native Client ermöglicht Mehrdeutigkeit in Verbindungszeichenfolgen (z. B. können einige Schlüsselwörter mehrmals angegeben werden, und widersprüchliche Schlüsselwörter können aufgrund der Abwärtskompatibilität mit auflösungsbasierter Position oder Rangfolge zulässig sein). Zukünftige Versionen von SQL Server Native Client lassen möglicherweise keine Mehrdeutigkeit in Verbindungszeichenfolgen zu. Es empfiehlt sich, anwendungen so zu ändern, dass SQL Server Native Client verwendet wird, um abhängigkeiten von Verbindungszeichenfolgendeutigkeit 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 SQL Server erfordert, dass @@TRANCOUNT identisch sein muss, nachdem eine Batch- oder gespeicherte Prozedur die Ausführung beendet hat, wie sie beim Starten des Batchs oder der gespeicherten Prozedur war.
Bei SQL Server Native Client bewirkt ITransactionLocal::BeginTransaction, dass eine Transaktion sofort gestartet wird. Bei 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 auf MDAC zurücksetzen 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 die Snapshottransaktionsisolation. (In Programmierbegriffen ist die Lesezugriffstransaktionsisolation mithilfe der Zeilenversionsverwaltung mit lesesicherer Transaktion identisch.)