Denk aan de mooie dagen van uw jeugd, toen alfabet soep uw favoriete maaltijd was. Houd deze blije gedachten in uw achterhoofd terwijl we een paar lepels proeven van de databaseversie van alfabetsoep. In de volgende secties worden de basisbeginselen beschreven van het verbinden met een database met verbindingsreeksen en het gebruiken van een database-programmeerinterface in uw Access VBA-code.
In dit artikel
ODBC-stuurprogramma of OLE DB-provider gebruiken
Programmatische interface met SQL Server vanuit Access
Overzicht van versies van ODBC-stuurprogramma's
ODBC-stuurprogramma of OLE DB-provider gebruiken
Verbindingsreeksen bestaan al heel lang. U kunt een opgemaakte verbindingsreeks definiëren in de gebruikersinterface van Access of in VBA-code. Met een verbindingsreeks (met ODBC of OLE DB) worden gegevens rechtstreeks doorgestuurd naar de database, zoals de serverlocatie, de naam van de database, het type beveiliging en andere nuttige opties. Bijvoorbeeld:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
In het begin was er SQL Server Native Client (SNAC), een op zichzelf staande bibliotheek met ODBC- en OLEDB-technologieën die nog steeds beschikbaar is voor SQL Server-versies van 2005 tot 2012. Veel oudere applicaties gebruikten SNAC en het wordt nog steeds ondersteund voor achterwaartse compatibiliteit, maar we raden af om het te gebruiken voor nieuwe applicatie-ontwikkeling. U moet nieuwere, individuele, downloadbare versies van de ODBC-stuurprogramma's gebruiken.
ODBC-Stuurprogramma's
Open Database Connectivity (ODBC) is een protocol waarmee u een Access-database verbindt met een externe gegevensbron, zoals Microsoft SQL Server. Meestal gebruikt u bestandsgegevensbronnen (ook wel DSN-bestanden genoemd) om een verbindingsreeks toe te voegen. In dat geval wordt het sleutelwoord FILEDSN gebruikt in de verbindingsreeks of opgeslagen in het register, in welk geval het DSN-sleutelwoord wordt gebruikt. U kunt ook VBA gebruiken om deze eigenschappen in te stellen met een 'DSN-less' verbindingsreeks.
In de loop der jaren zijn ODBC-stuurprogramma's in drie fasen gedistribueerd:
-
Voorafgaand aan 2005 werden ODBC-Stuurprogramma's geleverd met Windows Data Access Components (WDAC), dat oorspronkelijk Microsoft Data Access Components (MDAC) heette. Deze onderdelen worden nog steeds geleverd met Windows, voor achterwaartse compatibiliteit. Zie Microsoft-of Windows Data Access-onderdelen voor meer informatie.
-
ODBC-Stuurprogramma's werden geleverd met SNAC voor SQL Server 2005 tot en met SQL Server 2012.
-
Na SQL Server 2012 werden ODBC-stuurprogramma's afzonderlijk verzonden en bevatten ze ondersteuning voor nieuwe SQL Server-functies.
Bij nieuwe projecten vermijdt u het gebruik van ODBC-stuurprogramma's uit de eerste twee fasen en gebruikt u ODBC-stuurprogramma's uit de derde fase.
OLE DB-providers
OLE DB (Object Linking and Embedding, Database) is een meer recent protocol dat u gebruikt om een Access-database aan te sluiten op een externe gegevensbron, zoals Microsoft SQL Server. OLE DB vereist geen DSN en biedt ook volledige toegang tot ODBC-gegevensbronnen en ODBC-stuurprogramma's.
Tip Meestal gebruikt u het dialoogvenster Data Link-eigenschappen om een OLE DB-verbindingsreeks toe te voegen. Hoewel Access het dialoogvenster Data Link-eigenschappen niet kan openen, kunt u in Windows Verkenner een leeg txt-bestand maken, het bestandstype wijzigen in .udl en vervolgens dubbelklikken op het bestand. Nadat u een verbindingsreeks hebt gemaakt, wijzigt u het bestandstype terug naar .txt.
In de loop der jaren zijn OLE DB-providers in drie fasen gedistribueerd:
-
Voorafgaand aan 2005 werden OLE DB-providers geleverd met Windows Data Access Components (WDAC), dat oorspronkelijk Microsoft Data Access Components (MDAC) heette.
-
OLE DB-providers werden geleverd met SQL Server 2005 tot en met SQL Server 2017. Het werd afgeschaft in 2011.
-
In 2017 werd de OLE DB-provider van SQL Server teruggehaald.
De momenteel aanbevolen versie voor het ontwikkelen van nieuwe oplossingen is OLE DB-stuurprogramma 18 voor SQL Server.
Hoe de prestaties te optimaliseren met een ODBC-verbindingsreeks
Om de prestaties te optimaliseren, het netwerkverkeer te minimaliseren en de toegang van meerdere gebruikers tot de SQL Server-database te beperken, gebruikt u zo min mogelijk verbindingsreeksen, door verbindingsreeksen over meerdere recordsets te delen. Hoewel Ace eenvoudig een verbindingsreeks doorgeeft aan de server, begrijpt en gebruikt het de volgende sleutelwoorden: DSN, DATABASE, UID, PWD en DRIVER helpen client/server-communicatie te minimaliseren.
Opmerking Als er een ODBC-verbinding met een externe gegevensbron wordt verbroken, probeert Access automatisch om opnieuw verbinding te maken met de gegevensbron. Als het opnieuw proberen lukt, kunt u verder werken. Als de poging mislukt, kunt u nog steeds werken met objecten die niet afhankelijk zijn van de verbinding. Om opnieuw verbinding te maken, sluiten u Access en opent u het opnieuw.
Aanbevelingen voor het gebruik van zowel ODBC als OLE DB
Vermijd het combineren van verbindingsreeks- en databasetoegangstechnologieën. Gebruik een ODBC-verbindingsreeks voor DAO. Gebruik een OLE DB-verbindingsreeks voor ADO. Als uw toepassing VBA-code bevat die zowel DAO als ADO gebruikt, gebruikt u het ODBC-stuurprogramma voor DAO en de OLE DB-provider voor ADO. Probeer om de nieuwste functionaliteit en ondersteuning te krijgen voor zowel ODBC als OLEDB.
ODBC gebruikt de term stuurprogramma en OLE DB gebruikt de term provider. De termen beschrijven hetzelfde type softwarecomponent, maar zijn niet uitwisselbaar in de syntaxis van verbindingsreeksen. Gebruik de juiste waarde zoals gedocumenteerd.
Programmatische interface met SQL Server vanuit Access
Vanuit Access kunt u op twee manieren vanuit een programma een interface naar een SQL Server-database maken.
DAO
Een DAO (Data Access object) biedt een abstracte interface met een database. Microsoft Data Access Objects (DAO) is het systeemeigen objectmodel waarmee u toegang krijgt tot de kern van Access en SQL Server. Gebruik DAO voor het maken, verwijderen, wijzigen en weergeven van objecten, tabellen, velden, indexen, relaties, query's, eigenschappen en externe databases.
Zie Microsoft Data Access Objects voor meer informatie.
ADO
ActiveX-gegevensobjecten (ADO) biedt een geavanceerd programmeermodel en is beschikbaar in Access door een verwijzing naar een externe bibliotheek. ADO is eenvoudig te leren en maakt het mogelijk om gegevens uit verschillende bronnen, waaronder Access en SQL Server, te openen en te bewerken. De belangrijkste voordelen zijn gebruiksgemak, hoge snelheid, laag geheugengebruik en een kleine schijfvoetafdruk. ADO ondersteunt ook belangrijke functies voor het bouwen en webgebaseerde applicaties.
Zie Microsoft ActiveX Data Objects-referentie en Microsoft ActiveX Data Objects (ADO) voor meer informatie.
Welke moet u gebruiken?
In een Access-oplossing die VBA-code gebruikt, kunt u DAO, ADO of beide als uw database-interfacetechnologie gebruiken. DAO blijft de standaardinstelling in Access. Voor alle formulieren en rapporten en Access-query's wordt bijvoorbeeld DAO gebruikt. Maar als u migreert naar SQL Server kunt u overwegen ADO te gebruiken, om de oplossing efficiënter te maken. Hier vindt u algemene richtlijnen die u kunt gebruiken om te bepalen wanneer u DAO of ADO wilt gebruiken.
Gebruik DAO als u het volgende wilt doen:
-
Maak een lees/schrijf-, gebonden formulier zonder gebruik van VBA.
-
Lokale tabellen opvragen.
-
Download gegevens naar tijdelijke tabellen.
-
U kunt Pass Through-query's gebruiken als gegevensbronnen voor rapporten of formulieren in de modus alleen-lezen.
-
Een TableDef-of QueryDef-object definiëren en gebruiken in VBA.
Gebruik ADO als u het volgende wilt doen:
-
Maak gebruik van extra manieren om te optimaliseren, zoals het uitvoeren van asynchrone bewerkingen.
-
Voer DDL-en DML Pass Through-query's uit.
-
Ga rechtstreeks naar SQL Server-gegevens via recordsets in VBA.
-
Schrijf eenvoudigere code voor bepaalde taken, zoals streaming van Blob's.
-
Roep een opgeslagen procedure rechtstreeks aan met parameters, met behulp van een opdrachtobject in VBA.
Overzicht van versies van ODBC-stuurprogramma's
De volgende tabel bevat een overzicht van belangrijke informatie over versies van ODBC-stuurprogramma's, downloadlocaties en functie-ondersteuning. Zorg ervoor dat u de juiste bitsversie (64-bits of 32-bits) van het stuurprogramma gebruikt op basis van Windows en niet Office. Als u de 32-bitsversie van Access uitvoert op 64-bits Windows, installeert u 64-bitsstuurprogramma's, waaronder de 32-bitsonderdelen die nodig zijn voor Access.
Zie Gebruik van trefwoorden voor verbindingsreeksen gebruiken met SQL Server Native Client, Releaseopmerkingen voor ODBC naar SQL Server onder Windows (V17) en Functies van het Microsoft ODBC-stuurprogramma voor SQL Server onder Windows (V13, 11) voor meer informatie.
Overzicht van versies van OLE DB-provider
De volgende tabel bevat belangrijke informatie over versies van OLE DB-providers, downloadlocaties en functie-ondersteuning. Zorg ervoor dat u de juiste bitsversie (64-bits of 32-bits) van het stuurprogramma gebruikt op basis van Windows en niet Office. Als u de 32-bitsversie van Access uitvoert op 64-bits Windows, installeert u 64-bitsstuurprogramma's, waaronder de 32-bitsonderdelen die nodig zijn voor Access.
Zie Trefwoorden voor verbindingsreeksen gebruiken met SQL Server Native Client voor meer informatie.
OLE DB-provider |
Versie |
Downloaden |
Nieuwe functies |
Stuurprogramma OLE DB 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Zie OLE DB-stuurprogramma voor SQL Server-functie en Release-opmerkingen voor het Microsoft OLE DB-stuurprogramma voor SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 tot en met 2012 |
Afgeschaft, niet gebruiken |
|
OLE DB-stuurprogramma (SQLOLEDB) |
Afgeschaft, niet gebruiken |
Sleutelwoordenoverzicht ODBC
De volgende tabel bevat een overzicht van ODBC-sleutelwoorden die door SQL Server worden herkend en hun doel. In Access wordt alleen een deelverzameling herkend.
Trefwoord |
Beschrijving |
Addr |
Het netwerkadres van de server waarop een exemplaar van SQL Server wordt uitgevoerd. |
AnsiNPW |
Specificeert het gebruik van ANSI-gedefinieerd gedrag voor het afhandelen van NULL-vergelijkingen, opvulling van tekengegevens, waarschuwingen en NULL-aaneenschakeling (Ja of Nee). |
APP |
De naam van de toepassing die SQLDriverConnect aanroept. |
ApplicationIntent |
Declareert het type werkbelasting van de toepassing bij het maken van verbinding met een server (ReadOnly of ReadWrite). |
AttachDBFileName |
De naam van het primaire bestand van een toevoegbare database. |
AutoTranslate |
Hiermee wordt aangegeven of ANSI-tekenreeksen worden verzonden tussen de client of server of worden vertaald naar Unicode (Ja of Nee). |
Database |
De naam van de database. Beschrijving Het doel van de verbinding. Stuurprogramma De naam van het stuurprogramma dat door SQLDrivers wordt geretourneerd. |
DSN |
Naam van een bestaande ODBC-gebruiker of systeemgegevensbron. Versleutelen Geeft aan of gegevens moeten worden versleuteld voordat deze worden verzonden via het netwerk (Ja of Nee). |
Failover_Partner |
De naam van de failover-partnerserver die moet worden gebruikt als er geen verbinding kan worden gemaakt met de primaire server. |
FailoverPartnerSPN |
De SPN voor de failover-partner. |
Fallback |
Afgeschaft sleutelwoord. |
FileDSN |
Naam van een bestaande ODBC-gebruiker of systeemgegevensbron. Taal De taal van de SQL Server. |
MARS_Connection |
Hiermee geeft u meerdere actieve resultaatsets (MARS) op voor de verbinding voor SQL Server 2005 (9.x) of hoger (Ja of Nee). |
MultiSubnetFailover |
Hiermee geeft u op of u verbinding wilt maken met de listener van de beschikbaarheidsgroep van een SQL Server-beschikbaarheidsgroep of een exemplaar van een failovercluster (Ja of Nee). |
Netto |
dbnmpntw geeft named pipes aan en dbmssocn geeft TCP/IP aan. |
PWD |
Het wachtwoord voor SQL Server-aanmelding. |
QueryLog_On |
Hiermee wordt de registratie van langlopende query's opgegeven (Ja of Nee). |
QueryLogFile |
Het volledige pad en de bestandsnaam van een bestand dat wordt gebruikt voor het vastleggen van gegevens op query's met een lange uitvoeringstijd. |
QueryLogTime |
Een tekenreeks met cijfers die de drempel (in milliseconden) voor het loggen van langlopende query's aangeeft. |
QuotedId |
Hiermee wordt aangegeven of SQL Server de ISO-regels hanteert voor het gebruik van aanhalingstekens in SQL-instructies (Ja of Nee). |
Regionaal |
Hiermee bepaalt u of het ODBC-stuurprogramma voor SQL Server Native Client clientinstellingen gebruikt bij het converteren van valuta-, datum- of tijdgegevens naar tekengegevens (Ja of Nee). |
SaveFile |
Naam van een ODBC-gegevensbronbestand waarin de kenmerken van de huidige verbinding zijn opgeslagen als de verbinding tot stand is gebracht. |
Server |
De naam van een exemplaar van SQL Server: Server op het netwerk, een IP-adres of een Configuration Manager-alias. |
ServerSPN |
De SPN voor de server. |
StatsLog_On |
Hiermee schakelt u de opname van prestatiegegevens van SQL Server Native Client ODBC-stuurprogramma's in. |
StatsLogFile |
Het volledige pad en de bestandsnaam van een bestand dat wordt gebruikt voor het opnemen van SQL Server Native Client ODBC-stuurprogramma prestatiestatistieken. |
Trusted_Connection |
Hiermee geeft u op of de Windows-verificatiemodus of de gebruikersnaam of het wachtwoord voor SQL Server moet worden gebruikt voor validatie bij aanmelding (ja of Nee). |
TrustServerCertificate |
Wanneer gebruikt met Versleuteld, wordt versleuteling met een zelfondertekend servercertificaat ingeschakeld. |
UID |
De naam van de SQL Server-aanmelding. |
UseProcForPrepare |
Afgeschaft sleutelwoord. |
WSID |
De werkstations-id, de netwerknaam van de computer waarop de toepassing zich bevindt. |
Sleutelwoordenoverzicht OLE DB
De volgende tabel bevat een overzicht van OLE DB-sleutelwoorden die door SQL Server worden herkend en hun doel. In Access wordt alleen een deelverzameling herkend.
Trefwoord |
Beschrijving |
Addr |
Het netwerkadres van de server waarop een exemplaar van SQL Server wordt uitgevoerd. |
APP |
De tekenreeks waarmee de toepassing wordt aangeduid. |
ApplicationIntent |
Declareert het type werkbelasting van de toepassing bij het maken van verbinding met een server (ReadOnly of ReadWrite). |
AttachDBFileName |
De naam van het primaire bestand van een toevoegbare database. |
AutoTranslate |
Hiermee configureert u OEM/ANSI-tekenomzetting (Waar of Onwaar). |
Connect Timeout |
De hoeveelheid tijd (in seconden) die moet worden gewacht totdat de initialisatie van de gegevensbron is voltooid. |
Huidige taal |
De naam van de taal van de SQL-Server. |
Gegevensbron |
De naam van een exemplaar van SQL Server in de organisatie. |
Database |
De naam van de database. |
DataTypeCompatibility |
Een getal dat aangeeft welke modus wordt gebruikt voor het verwerken van gegevenstypen. |
Versleutelen |
Geeft aan of gegevens moeten worden versleuteld voordat deze worden verzonden via het netwerk (Ja of Nee). |
FailoverPartner |
De naam van de failover-server die wordt gebruikt voor databasespiegeling. |
FailoverPartnerSPN |
De SPN voor de failover-partner. |
Initiële catalogus |
De naam van de database. |
Oorspronkelijke bestandsnaam |
De naam van het primaire bestand (inclusief de volledige padnaam) van een koppelbare database. |
Geïntegreerde beveiliging |
Wordt gebruikt voor Windows-authenticatie (SSPI). |
Taal |
De taal van de SQL Server. |
MarsConn |
Hiermee geeft u meerdere actieve resultaatsets (MARS) op voor de verbinding voor SQL Server 2005 (9.x) of hoger (Ja of Nee). |
Netto |
De netwerkbibliotheek die wordt gebruikt om verbinding te maken met een exemplaar van SQL Server in de organisatie. |
Netwerkadres |
Het netwerkadres van een exemplaar van SQL Server in de organisatie. |
PacketSize |
Network packet size. De standaardwaarde is 4096. |
Persist Security Info |
Geeft aan of blijvende beveiliging is ingeschakeld (Waar of Onwaar). |
PersistSensitive |
Geeft aan of de optie blijvend gevoelig is ingeschakeld (Waar of Onwaar). |
Provider |
Voor SQL Server Native Client moet dit SQLNCLI11 zijn. |
PWD |
Het wachtwoord voor SQL Server-aanmelding. |
Server |
De naam van een exemplaar van SQL Server: Server op het netwerk, een IP-adres of een Configuration Manager-alias. |
ServerSPN |
De SPN voor de server. |
Timeout |
De hoeveelheid tijd (in seconden) die moet worden gewacht totdat de initialisatie van de gegevensbron is voltooid. |
Trusted_Connection |
Hiermee geeft u op of de Windows-verificatiemodus of de gebruikersnaam of het wachtwoord voor SQL Server moet worden gebruikt voor validatie bij aanmelding (ja of Nee). |
TrustServerCertificate |
Hiermee wordt aangegeven of een servercertificaat wordt gevalideerd (waar of onwaar). |
UID |
De naam van de SQL Server-aanmelding. |
Gegevensversleuteling gebruiken |
Geeft aan of gegevens moeten worden versleuteld voordat deze worden verzonden via het netwerk (waar of onwaar). |
UseProcForPrepare |
Afgeschaft sleutelwoord. |
WSID |
De werkstations-id, de netwerknaam van de computer waarop de toepassing zich bevindt. |