Entwirren der neuen Microsoft SQL Server ODBC- und OLEDB-Treiber
Einige von Ihnen wissen vielleicht bereits, dass Microsoft die geplante Einstellung von OLEDB zurückgenommen und einen neuen OLEDB-Treiber bereitgestellt hat. Es kann jedoch ein Kopfkratzer sein, herauszufinden, was Sie verwenden sollten. Als wir SQL Server Native Client verwendeten, war es ziemlich einfach – der Native Client hatte sowohl OLEDB als auch ODBC in einer einzigen DLL-Datei geliefert, was eine einfache Installation ermöglichte. Sie mussten lediglich sicherstellen, dass Sie die richtige Version von Native Client verwenden.
Da SQL Server jetzt unter Linux verfügbar ist, macht es keinen Sinn mehr, Native Client zu verteilen, da Linux im Allgemeinen OLEDB nicht unterstützt, was hauptsächlich eine reine Windows-Technologie ist, die hauptsächlich von Microsoft-Produkten verwendet wird. Aus diesem Grund hat sich Microsoft nicht dafür entschieden, sowohl ODBC als auch OLEDB in einer einzigen DLL zu kombinieren. Wenn Ihre Anwendung VBA-Code enthält, der sowohl DAO als auch ADO verwendet, müssen Sie zwei installieren verschiedenen Anbietern, um die neueste Funktion und Unterstützung für ODBC bzw. OLEDB zu erhalten.
Die Namenskonvention kann etwas verwirrend sein, da viele Leute verschiedene Treiber einfach nur als „ODBC-Treiber“ oder „OLEDB-Anbieter“ bezeichnen. Also lasst uns die Namen klarstellen. Wir beginnen mit der Identifizierung der veralteten Versionen und sehen uns dann die aktuellen Versionen an.
Veraltete Versionen
Standardmäßig werden alle Windows-Versionen mit zwei vorinstallierten SQL Server-Clientbibliotheken für den Datenzugriff geliefert:
Microsoft OLE DB Provider für SQL Server (auch bekannt als SQLOLEDB)
Microsoft SQL Server ODBC-Treiber (auch bekannt als SQLODBC)
Es ist sehr Es ist wichtig zu beachten, dass diese VERALTET sind . Diese zielen auf SQL Server 2000 ab und es fehlen neue Features, die seitdem eingeführt wurden. Windows wird nicht Versenden Sie neue Treiber oder aktualisieren Sie diese über das Windows Update. In Zukunft müssen Sie als Anwendungsentwickler die Treiber der geeigneten Version zur Verwendung mit Ihrer Anwendung bereitstellen, anstatt sich auf die von Windows bereitgestellten zu verlassen. NICHT Verwenden Sie diese in Ihrer aktuellen Entwicklung.
Aktuelle Versionen
Sehen wir uns nun den richtigen ODBC-Treiber und OLEDB-Anbieter an, den wir möglicherweise verwenden möchten.
ODBC-Treiber 17 für SQL Server
Zum Zeitpunkt des Schreibens ist der ODBC-Treiber 17 für SQL Server der neueste Treiber und kann unter dem angegebenen Link heruntergeladen werden. Die Verbindungszeichenfolge sieht folgendermaßen aus:
ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;
OLE DB-Treiber 18 für SQL Server
Zum Zeitpunkt des Schreibens ist der OLEDB-Treiber 18 der neueste Treiber. Obwohl die Version eine höher ist, entspricht der Funktionsumfang dem ODBC-Treiber 17 für SQL Server. Die Verbindungszeichenfolge sieht folgendermaßen aus:
Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;
32-Bit oder 64-Bit?
Eine häufig gestellte Frage ist, ob man die 64-Bit- oder die 32-Bit-Version des Treibers installieren sollte. Die Antwort ist dieselbe, unabhängig davon, welche Versionen wir diskutieren, und sie hängt immer vom Betriebssystem ab, nicht von Office. Wenn Sie also 32-Bit-Zugriff auf 64-Bit-Windows ausführen, sollten Sie 64-Bit-Treiber installieren. Dies schließt die 32-Bit-Komponenten ein, die für die Ausführung des 32-Bit-Zugriffs erforderlich sind.
Kann ich SQL Server Native Client verwenden?
Offiziell wird SQL Server Native Client bis SQL Server 2012 unterstützt. Sie können es jedoch weiterhin verwenden, um eine Verbindung zu neueren Versionen von SQL Server herzustellen. Es gibt mehrere Funktionen, die dem Native Client fehlen. Im Laufe der Zeit werden sie für Ihre Anforderungen immer ungeeigneter, insbesondere mit der Azure-Technologie. Obwohl Sie es möglicherweise weiterhin für Ihre vorhandenen Anwendungen verwenden können, empfehlen wir Ihnen, neue Entwicklungen mit den separaten ODBC- und OLEDB-Treibern zu planen und Ihre vorhandenen Anwendungen nach Möglichkeit zu migrieren. Sie müssen migrieren, wenn neue Technologien verwendet werden müssen, die nur von diesen neueren Treibern unterstützt werden (Beispiele sind die Azure-Authentifizierung oder die Always Encrypted-Funktion).
Brauche ich beides?
Nur wenn Sie sowohl DAO als auch ADO verwenden. Im Allgemeinen verwenden alle Formulare und Berichte sowie Access-Abfragen immer DAO. Die einzige Zeit, in der Sie ADO verwenden könnten, ist innerhalb von VBA-Code. Wenn Sie also ADO nicht verwenden, können Sie nur mit dem ODBC-Treiber davonkommen, und das sollte für Ihre Anforderungen ausreichen. Das heißt, wenn Sie Ihre Tabellen normalerweise verknüpfen, würden Sie Code ähnlich dem folgenden verwenden:
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Setze db =CurrentDb
Setze tdf =db.CreateTableDef
tdf.Name =„MyRemoteTable“
tdf.SourceTableName =„dbo.MyRemoteTable“
tdf.Connect =„ODBC;DRIVER=ODBC-Treiber 17 für SQL Server;SERVER=myServer;DATABASE=myDatabase;“
db.TableDefs.Append
Die für tdf.Connect verwendete Syntax funktioniert für pass-through querydef oder sogar für die Connect-Eigenschaft der DAO.Workspace.OpenDatabase-Methode.
Es ist legal, ADO-Verbindungen mit ODBC zu öffnen, aber der Nachteil ist, dass Sie am Ende mehr Schichten durchlaufen müssen, weil Sie den OLEDB-Anbieter für ODBC verwenden würden, um eine Verbindung mit dem ODBC-Treiber 17 für SQL Server herzustellen. Wenn Sie trotzdem lieber ODBC verwenden möchten, können Sie den folgenden Code verwenden, um ODBC über OLEDB zu verwenden:
Dim con As ADODB.Connection
Setzen Sie con =New ADODB.Connection
con.ConnectionString =„DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;“
con.Open
Es ist besser, die zusätzliche Ebene zu vermeiden und die OLEDB direkt zu verwenden. Sie können diesen Code verwenden, um die beste Leistung mit Ihrem ADO-Code zu erzielen:
Dim con As ADODB.Connection
Set con =New ADODB.Connection
con.ConnectionString =„Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;”
con.Open
Daher benötigen und verwenden Sie den neuen OLEDB-Treiber für SQL Server nur dann tatsächlich, wenn Sie ADO-Code in Ihrer Anwendung haben und die volle Leistungsfähigkeit von ADO nutzen möchten, die vom zugrunde liegenden OLEDB-Treiber aktiviert werden muss.
Zusätzliche Referenz
Roadmap für die Microsoft-Datenzugriffstechnologie