sql >> Database >  >> RDS >> Access

De nieuwe Microsoft SQL Server ODBC- en OLEDB-stuurprogramma's ontwarren

De nieuwe Microsoft SQL Server ODBC- en OLEDB-stuurprogramma's ontrafelen

Sommigen van jullie weten misschien al dat Microsoft terugkwam op hun geplande afschaffing van OLEDB en een nieuw OLEDB-stuurprogramma heeft geleverd. Het kan echter lastig zijn om erachter te komen wat u zou moeten gebruiken. Toen we SQL Server Native Client gebruikten, was het vrij eenvoudig:de Native Client had zowel OLEDB als ODBC in een enkel DLL-bestand, wat een gemakkelijke installatie mogelijk maakte. Alles wat je moest doen om ervoor te zorgen dat je de juiste versie van Native Client gebruikte.

Nu SQL Server beschikbaar is op Linux, heeft het geen zin meer om Native Client te distribueren, aangezien Linux in het algemeen OLEDB niet ondersteunt, wat voornamelijk een alleen-Windows-technologie is die voornamelijk door Microsoft-producten wordt gebruikt. Om die reden heeft Microsoft er niet voor gekozen om zowel ODBC als OLEDB in één DLL te combineren. Als uw toepassing VBA-code bevat die zowel DAO als ADO gebruikt, moet u twee installeren verschillende providers om de nieuwste functies en ondersteuning voor respectievelijk ODBC en OLEDB te krijgen.

De naamgevingsconventie kan een beetje verwarrend zijn omdat veel mensen losjes naar verschillende stuurprogramma's verwijzen als gewoon "ODBC-stuurprogramma" of "OLEDB-provider". Dus laten we de namen rechtzetten. We beginnen met het identificeren van de verouderde versies en bekijken vervolgens de huidige versies.

Verouderde versies

Standaard worden alle versies van Windows geleverd met twee vooraf geïnstalleerde SQL Server-clientbibliotheken voor gegevenstoegang:

Microsoft OLE DB-provider voor SQL Server (ook bekend als SQLOLEDB)
Microsoft SQL Server ODBC-stuurprogramma (ook bekend als SQLODBC)

Het is erg belangrijk om op te merken dat deze GESCHRAPT zijn . Die zijn gericht op SQL Server 2000 en missen sindsdien nieuwe functies. Windows zal niet verstuur eventuele nieuwe stuurprogramma's of werk deze bij via de Windows Update. In de toekomst moet u, de ontwikkelaar van de toepassing, de stuurprogramma's van de juiste versie leveren om met uw toepassing te gebruiken, in plaats van te vertrouwen op de stuurprogramma's die door Windows worden geleverd. Doe NIET gebruik die in je huidige ontwikkeling.

Huidige versies

Laten we, met dat uit de weg, kijken naar de juiste ODBC-driver en OLEDB-provider die we misschien willen gebruiken.

ODBC-stuurprogramma 17 voor SQL Server

Op het moment van schrijven is het ODBC-stuurprogramma 17 voor SQL Server het nieuwste stuurprogramma en kan worden gedownload via de meegeleverde link. De verbindingsreeks ziet er als volgt uit:

ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;

OLE DB-stuurprogramma 18 voor SQL Server

Op het moment van schrijven is de OLEDB-driver 18 de nieuwste driver. Hoewel de versie één hoger is, is de functieset gelijk aan de ODBC Driver 17 voor SQL Server. De verbindingsreeks ziet er als volgt uit:

Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;

32-bits of 64-bits?

Een veel voorkomende vraag die naar voren komt, is of men de 64-bits of 32-bits versies van het stuurprogramma moet installeren. Het antwoord is hetzelfde, ongeacht welke versies we bespreken en het is altijd afhankelijk van het besturingssysteem, niet van het Office. Als u 32-bits Access op 64-bits Windows gebruikt, wilt u daarom 64-bits stuurprogramma's installeren. Dit omvat de 32-bits componenten die nodig zijn om de 32-bits toegang te laten werken.

Kan ik SQL Server Native Client gebruiken?

Officieel wordt SQL Server Native Client ondersteund tot en met SQL Server 2012. U kunt het echter nog steeds gebruiken om verbinding te maken met nieuwere versies van SQL Server. Er zijn verschillende functies die ontbreken in de Native Client. Naarmate de tijd verstrijkt, zullen ze steeds ongeschikter worden voor uw behoeften, vooral met Azure-technologie. Hoewel u het misschien voor uw bestaande toepassingen kunt blijven gebruiken, raden we u aan om nieuwe ontwikkelingen te plannen met behulp van de afzonderlijke ODBC- en OLEDB-stuurprogramma's en uw bestaande toepassingen waar mogelijk te migreren. U moet migreren wanneer het nodig is om gebruik te maken van nieuwe technologieën die alleen worden ondersteund door die nieuwere stuurprogramma's (voorbeelden zijn Azure Authentication of Always Encrypted-functie).

Heb ik beide nodig?

Alleen als u zowel DAO als ADO gebruikt. Over het algemeen gebruiken alle formulieren en rapporten en Access-query's altijd DAO. De enige keer dat u ADO zou kunnen gebruiken, is binnen VBA-code. Dus als u ADO niet gebruikt, kunt u wegkomen met alleen de ODBC-driver en dat zou voldoende moeten zijn voor uw behoefte. Dat betekent dat wanneer u normaal uw tabellen koppelt, u code zou gebruiken die lijkt op de volgende:

Dim db As DAO.Database
Dim tdf As DAO.TableDef

Set db =CurrentDb
Set tdf =db.CreateTableDef

tdf.Name =“MyRemoteTable”
tdf.SourceTableName =“dbo.MyRemoteTable”
tdf.Connect =“ODBC;DRIVER=ODBC-stuurprogramma 17 voor SQL Server;SERVER=myServer;DATABASE=myDatabase;”

db.TableDefs.Append

De syntaxis die wordt gebruikt voor tdf.Connect werkt voor pass-through-querydef of zelfs voor de eigenschap Connect van de DAO.Workspace.OpenDatabase-methode.

Het is legaal om ADO-verbindingen te openen met ODBC, maar het nadeel is dat je uiteindelijk door meer lagen gaat omdat je de OLEDB-provider voor ODBC zou gebruiken om verbinding te maken met het ODBC-stuurprogramma 17 voor SQL Server. Als u toch liever ODBC gebruikt, kunt u de volgende code gebruiken om ODBC boven OLEDB te gebruiken:

Dim con As ADODB.Connection

Set con =New ADODB.Connection
con.ConnectionString =“DRIVER=ODBC Driver 17 voor SQL Server;SERVER=myServer;DATABASE=myDatabase;”
con.Open

Het is beter om de extra laag te vermijden en de OLEDB direct te gebruiken. U kunt deze code gebruiken om de beste prestaties te krijgen met uw ADO-code:

Dim con As ADODB.Connection

Set con =Nieuwe ADODB.Connection
con.ConnectionString =“Provider=MSOLEDBSQL;Server=mijnServer; Database=myDataBase;”
con.Open

Dus de enige keer dat u de nieuwe OLEDB-driver voor SQL Server daadwerkelijk nodig hebt en gebruikt, is wanneer u ADO-code in uw toepassing heeft en de volledige capaciteit van ADO wilt gebruiken, die moet worden ingeschakeld door de onderliggende OLEDB-driver.

Aanvullende referentie

Roadmap voor Microsoft Data Access-technologie


  1. Hoe lokale variabelen declareren in postgresql?

  2. Toegang krijgen tot een RowDataPacket-object

  3. Selecteer statement om duplicaten op bepaalde velden te vinden

  4. Standaard rijvolgorde voor selectiequery in oracle