Husker du barndommens glade dager da bokstaver var spennende, du kunne bygge ord med dem! Nå skal du få en smakebit av databaseversjonen av de spennende bokstavene. I avsnittene nedenfor forklarer vi hvordan du får tilgang til en database med tilkoblingsstrenger og bruker et grensesnitt for databaseprogrammering i din Access VBA-kode.
I denne artikkelen
Bruke ODBC-driver eller OLE DB-leverandør
Programmeringsgrensesnitt til SQL Server fra Access
Sammendrag av ODBC-driverversjoner
Bruke ODBC-driver eller OLE DB-leverandør
Tilkoblingstrenger er gammelt nytt. Du kan definere en formatert tilkoblingsstreng enten i Access-brukergrensesnittet eller i VBA-koden. En tilkoblingsstreng (enten ODBC eller OLE DB) sender informasjon direkte til databasen, for eksempel serverplassering, databasenavn, sikkerhetstype og andre nyttige alternativer. Eksempel:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
I begynnelsen var det SQL Server Native Client (SNAC), et frittstående bibliotek som inneholdt ODBC- og OLEDB-teknologier og som fremdeles er tilgjengelig for SQL Server-versjonene 2005 til 2012. Mange eldre programmer ble brukt og er fremdeles støttet for bakoverkompatibilitet, men vi anbefaler ikke at du bruker det til ny programutvikling. Du bør bruke nyere individuelle, nedlastbare versjoner av ODBC-driverne.
ODBC-drivere
Open Database Connectivity (ODBC) er en protokoll du kan bruke til å koble en Access-database til en ekstern datakilde, for eksempel Microsoft SQL Server. Vanligvis bruker du fildatakilder (også kalt DSN-filer) for å legge til en tilkoblingsstreng. I så fall brukes nøkkelordet FILEDSN på tilkoblingsstrengen, eller lagres i registeret. I sistnevnte tilfelle brukes DSN-nøkkelordet. Du kan også bruke VBA til å angi disse egenskapene ved hjelp av en «DSN-less» tilkoblingsstreng.
Gjennom årene har ODBC-drivere blitt levert i tre trinn:
-
Før 2005 var det ODBC-drivere som ble levert med Windows Data Access Components (WDAC), som opprinnelig ble kalt Microsoft Data Access Components (MDAC). Disse komponentene leveres fremdeles med Windows for bakoverkompatibilitet. Hvis du vil ha mer informasjon, kan du se Microsoft eller Windows Data Access Components.
-
ODBC-drivere levert med SNAC for SQL Server 2005 via SQL Server 2012.
-
Etter SQL Server 2012 har ODBC-drivere blitt levert enkeltvis og har støtte for nye SQL Server-funksjoner.
Hvis du vil ha ny utvikling, bør du unngå å bruke ODBC-drivere fra de to første fasene, og bruke ODBC-drivere fra den tredje fasen.
OLE DB-leverandører
Object Linking and Embedding, Database (OLE DB) er en nyere protokoll du kan bruke til å koble en Access-database til en ekstern datakilde, for eksempel Microsoft SQL Server. OLE DB krever ikke en DSN og har også full tilgang til ODBC-datakilder og ODBC-drivere.
Tips Vanligvis bruker du dialogboksen Datakoblingsegenskaper til å legge til en OLE DB-koblingsstreng. Selv om det ikke er noen måte å åpne dialogboksen Egenskaper for datakobling på i Windows Explorer, kan du opprette en tom TXT-fil, endre filtypen til .udl, og deretter dobbeltklikke på filen. Når du har opprettet en tilkoblingsstreng, endrer du filtypen tilbake til .txt.
Gjennom årene har OLE DB-leverandører blitt levert i tre faser:
-
Før 2005 var det OLE DB-leverandører som ble levert med Windows Data Access Components (WDAC), som opprinnelig ble kalt Microsoft Data Access Components (MDAC).
-
OLE DB-leverandører levert med SQL Server 2005 via SQL Server 2017. Den ble avskrevet i 2011.
-
I 2017 ble avskrivingen av OLE DB-leverandøren for SQL Server opphevet.
For øyeblikket anbefalt versjon for ny løsningsutvikling er OLE DB-driver 18 for SQL Server.
Slik optimaliserer du ytelsen med en ODBC-koblingsstreng
Hvis du vil optimalisere ytelsen, minimere nettverkstrafikken og redusere tilgang for flere brukere til SQL Server-databasen, bør du bruke så få koblingsstrenger som mulig ved å dele koblingsstrenger over flere postsett. Selv Access bare overfører en tilkoblingsstreng til serveren, kan den forstå og bruke følgende nøkkelord: DSN, DATABASE, UID, PWD og DRIVER for å bidra til å minimere klient/server-kommunikasjon.
Obs! Hvis en ODBC-tilkobling til en ekstern datakilde mistes, vil Access automatisk prøve å koble seg til den på nytt. Hvis forsøket er vellykket, kan du fortsette å arbeide. Hvis forsøket mislykkes, kan du fortsette å arbeide med objekter som ikke er avhengig av tilkoblingen. Hvis du vil koble til på nytt, må du lukke og åpne Access på nytt.
Anbefalinger når du bruker både ODBC og OLE DB
Unngå å blande tilkoblingsstreng og tilgangsteknologier for databaser. Bruk en ODBC-tilkoblingsstreng for DAO. Bruk en OLE DB-tilkoblingsstreng for ADO. Hvis programmet inneholder VBA-kode som bruker både DAO og ADO, bruker du ODBC-driveren for DAO og OLE DB-leverandøren for ADO. Sats på å ha de nyeste funksjonene og støtten både for ODBC og OLEDB.
ODBC bruker begrepet driver og OLE DB bruker begrepet leverandør. Begrepene beskriver samme type programvarekomponent, men kan ikke brukes om hverandre i syntaksen for tilkoblingsstreng. Bruk den riktige verdien som dokumentert.
Programmeringsgrensesnitt til SQL Server fra Access
Det er to hovedmåter å bruke programmeringsgrensesnitt på i en SQL Server-database fra Access.
DAO
Datatilgangsobjekter (DAO) gir et abstrakt grensesnitt til en database. Microsoft Data Access Objects (DAO) er den opprinnelige programmeringsobjektmodellen, som du kan bruke til å få tilgang til kjernen i Access og SQL Server til å opprette, slette, endre og liste objekter, tabeller, felt, indekser, relasjoner, spørringer, egenskaper og eksterne databaser.
Hvis du vil ha mer informasjon, kan du se Microsoft Data Access Objects-referanse.
ADO
ActiveX Data Objects (ADO) gir en programmodell på høyt nivå og er tilgjengelig i Access ved en referanse til et tredjepartsbibliotek. ADO er enkel å lære og gjør det mulig for klientprogrammer å få tilgang til og redigere data fra en rekke ulike kilder, inkludert Access og SQL Server. Den primære fordelen er brukervennlighet, høy hastighet, lite minne og liten plass på harddisken. ADO støtter også viktige funksjoner for bygg- og nettbaserte programmer.
Hvis du vil ha mer informasjon, kan du se Microsoft ActiveX Data Objects-referanse og Microsoft ActiveX Data Objects (ADO).
Hvilken bør du bruke?
I en Access-løsning som bruker VBA-kode, kan du bruke DAO, ADO eller begge deler som teknologi for databasegrensesnitt. DAO fortsetter å være standard i Access. Alle skjemaer og rapporter og Access-spørringer bruker for eksempel DAO. Men når du overfører til SQL Server, kan du vurdere å bruke ADO til å gjøre løsningen mer effektiv. Her er generelle retningslinjer for å hjelpe deg med å bestemme når du skal bruke DAO eller ADO.
Bruk DAO når du ønsker å gjøre følgende:
-
Opprette en bundet lese/skrive-form uten å bruke VBA.
-
Spørre lokale tabeller.
-
Laste ned data til midlertidige tabeller.
-
Bruke pass-through-spørringer som datakilder for rapporter eller skjemaer i skrivebeskyttet modus.
-
Definere og bruke et TableDef- eller QueryDef-objekt i VBA.
Bruk ADO når du ønsker å gjøre følgende:
-
Dra nytte av ekstra måter å optimalisere på, for eksempel utføre asynkrone operasjoner.
-
Kjøre DDL og DML pass-trough-spørringer.
-
Få tilgang til SQL Server-data direkte gjennom postsett i VBA.
-
Skrive enklere kode for bestemte oppgaver, for eksempel direkte avspilling av BLOB.
-
Kalle en lagret prosedyre direkte, med parametre, ved bruk av et kommandoobjekt i VBA.
Sammendrag av ODBC-driverversjoner
Tabellen nedenfor oppsummerer viktig informasjon om ODBC-driverversjoner, nedlastingssteder og funksjonsstøtte. Kontroller at du bruker riktig bitversjon (64-biters eller 32-biters) av driveren, basert på Windows og ikke Office. Hvis du kjører 32-biters tilgang på 64-biters Windows, må du installere 64-biters drivere, som inkluderer den 32-biters komponenten som kreves for å få tilgang.
Hvis du vil ha mer informasjon, kan du se Bruke nøkkelord for tilkoblingsstreng med SQL Server Native Client, produktmerknader for ODBC for SQL Server i Windows (V17) og funksjoner i Microsoft ODBC Driver for SQL Server i Windows (V13, 11).
ODBC-drivere |
Versjon |
Last ned |
Nye funksjoner |
ODBC-drivere 17.0 til 17.3 |
SQL Server 2017 |
ODBC-driver 17.3 Bruke Azure Active Directory med ODBC-driveren Begrensninger for ODBC-driveren når du bruker Always Encrypted ODBC-driver 17.2 Bruker Always Encrypted med ODBC-driver for SQL Server Sortering av UTF-8-koding og Unicode-støtte ODBC-driver 17.1 Bruker Always Encrypted med ODBC-driver for SQL Server ODBC-driver 17.0 UseFMTONLY For å bruke eldre metadata i spesielle tilfeller som krever midlertidige tabeller. Se produktmerknader for ODBC til SQL Server i Windows Forskjeller når du bruker administrert forekomst (ODBC-versjon 17) |
|
ODBC-driver 13.1 |
SQL Server 2016 SP1, SQL Azure |
Tilgjengelighetsgrupper for AlwaysOn Driverklar koblingsgruppering i ODBC-driveren for SQL Server |
|
ODBC-driver 13.0 |
SQL Server 2016 |
Internasjonaliserte domenenavn (IDN) |
|
ODBC-driver 11.0 |
SQL Server 2005 til 2012 |
Robusthet for forbindelse i Windows ODBC-driver |
Sammendrag av OLE DB-leverandørversjoner
Tabellen nedenfor oppsummerer viktig informasjon om OLE DB-leverandørversjoner, nedlastingssteder og funksjonsstøtte. Kontroller at du bruker riktig bitversjon (64-biters eller 32-biters) av driveren, basert på Windows og ikke Office. Hvis du kjører 32-biters tilgang på 64-biters Windows, må du installere 64-biters drivere, som inkluderer den 32-biters komponenten som kreves for å få tilgang.
Hvis du vil ha mer informasjon, kan du se Bruke nøkkelord for tilkoblingsstreng med SQL Server Native Client.
OLE DB-leverandør |
Versjon |
Last ned |
Nye funksjoner |
OLE DB-driver 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Se OLE DB-driver for SQL Server-funksjon og produktmerknader for Microsoft OLE DB-driver for SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 til 2012 |
Avskrevet, ikke bruk |
|
OLE DB-driver (SQLOLEDB) |
Avskrevet, ikke bruk |
Sammendrag av ODBC-nøkkelord
Tabellen nedenfor oppsummerer ODBC-nøkkelord som gjenkjennes av SQL-servere og deres formål. Bare et delsett gjenkjennes i Access.
Nøkkelord |
Beskrivelse |
Addr |
Nettverksadressen til en server som kjører en forekomst av SQL Server. |
AnsiNPW |
Angir bruken av ANSI-definert atferd for håndtering av NULL-sammenligninger, tegndatautfylling, advarsler og NULL-sammenkjeding (Ja eller Nei). |
APP |
Navnet på programmet som anroper SQLDriverConnect. |
ApplicationIntent |
Deklarerer belastningstypen for programmet når du kobler til en server (ReadOnly eller ReadWrite). |
AttachDBFileName |
Navnet på den primære filen for en tilkoblet database. |
AutoTranslate |
Angir om det skal sendes ANSI-tegn mellom klienten og serveren eller oversettes til Unicode (Ja eller Nei). |
Database |
Navnet på databasen. Beskrivelse Hensikten med tilkoblingen. Driver Navnet på driveren som returnert av SQLDrivers. |
DSN |
Navnet på en eksisterende ODBC-bruker eller systemdatakilde. Encrypt Angi om dataene skal krypteres før de sendes ut over nettverket (Ja eller Nei). |
Failover_Partner |
Navnet på failover-partnerserveren som skal brukes hvis det ikke er mulig å opprette en tilkobling til den primære serveren. |
FailoverPartnerSPN |
SPN for failover-partneren. |
Fallback |
Avskrevet nøkkelord. |
FileDSN |
Navnet på en eksisterende ODBC-fildatakilde. Språk SQL Server-språket. |
MARS_Connection |
Angir flere aktive resultatsett (MARS) på tilkoblingen til SQL Server 2005 (9.x) eller nyere (Ja eller Nei). |
MultiSubnetFailover |
Angir om en lytter for et SQL Server-tilgjengelighetsgruppe eller en failover-klyngeforekomst (Ja eller nei) skal kobles til en tilgjengelighetsgruppe. |
Net |
dbnmpntw angir navngitte datakanaler og dbmssocn angir TCP/IP. |
PWD |
Passordet for SQL Server-pålogging. |
QueryLog_On |
Angir logging av langvarige spørringer (Ja eller Nei). |
QueryLogFile |
Fullstendig bane og filnavn til en fil som skal brukes til å logge data i langvarige spørringer. |
QueryLogTime |
Tegnstreng for sifre som spesifiserer grensen (i millisekunder) for logging av langvarige spørringer. |
QuotedId |
Angir om SQL Server bruker ISO-reglene for bruk av anførselstegn i SQL-setninger (Ja eller Nei). |
Regional |
Angir om ODBC-driveren for SQL Server Native Client bruker klientinnstillinger ved konvertering av valuta-, dato- eller tidsdata til tegndata (Ja eller Nei). |
SaveFile |
Navnet på en ODBC-datakildefil som attributtene for gjeldende tilkobling lagres i, hvis tilkoblingen lykkes. |
Server |
Navnet på en SQL Server-forekomst: Server på nettverket, en IP-adresse eller Configuration Manager-alias. |
ServerSPN |
SPN for serveren. |
StatsLog_On |
Aktiverer registrering av ytelsesdata i ODBC-driveren for SQL Server Native Client. |
StatsLogFile |
Fullstendig bane og filnavn til en fil som brukes til å registrere ytelsesstatistikk for ODBC-driveren for SQL Server Native Client. |
Trusted_Connection |
Angir om Windows-godkjenningsmodus eller brukernavn eller passord for SQL Server brukes til godkjenning av pålogging (Ja eller Nei). |
TrustServerCertificate |
Når det brukes med kryptering, aktiveres kryptering ved bruk av et selvsignert serversertifikat. |
UID |
Påloggingsnavnet for SQL Server-pålogging. |
UseProcForPrepare |
Avskrevet nøkkelord. |
WSID |
Arbeidsstasjonens ID, nettverksnavnet for datamaskinen der programmet befinner seg. |
Sammendrag av OLE DB-nøkkelord
Tabellen nedenfor oppsummerer OLE DB-nøkkelord som gjenkjennes av SQL-servere og deres formål. Bare et delsett gjenkjennes i Access.
Nøkkelord |
Beskrivelse |
Addr |
Nettverksadressen til en server som kjører en forekomst av SQL Server. |
APP |
Strengen som identifiserer programmet. |
ApplicationIntent |
Deklarerer belastningstypen for programmet når du kobler til en server (ReadOnly eller ReadWrite). |
AttachDBFileName |
Navnet på den primære filen for en tilkoblet database. |
AutoTranslate |
Konfigurerer oversetting av OEMER/ANSI-tegn (Sann eller Usann). |
Tidsavbrudd ved tilkobling |
Hvor lang tid (i sekunder) brukeren må vente før initialiseringen av datakilden er fullført. |
Gjeldende språk |
Navnet på SQL Server-språket. |
Datakilde |
Navnet på en forekomst av SQL Servier i organisasjonen. |
Database |
Navnet på databasen. |
DataTypeCompatibility |
Et tall som angir modus for datatypebehandling som skal brukes. |
Encrypt |
Angi om dataene skal krypteres før de sendes ut over nettverket (Ja eller Nei). |
FailoverPartner |
Navnet på failover-serveren som brukes for databasespeiling. |
FailoverPartnerSPN |
SPN for failover-partneren. |
Første katalog |
Navnet på databasen. |
Opprinnelig filnavn |
Navnet på den primære filen (inkludert fullstendig banenavn) for en tilkoblet database. |
Integrert sikkerhet |
Brukes for Windows-godkjenning (SSPI). |
Språk |
SQL Server-språket. |
MarsConn |
Angir flere aktive resultatsett (MARS) på tilkoblingen til SQL Server 2005 (9.x) eller nyere (Ja eller Nei). |
Net |
Nettverksbiblioteket som brukes til å opprette en tilkobling til en forekomst av SQL Server i organisasjonen. |
Nettverksadresse |
Nettverksadressen til en forekomst av SQL Server i organisasjonen. |
PacketSize |
Størrelse på nettverkspakke. Standardverdien er 4096. |
Informasjon om fast sikkerhet |
Angir om fast sikkerhet er aktivert (Sann eller Usann). |
PersistSensitive |
Angir om fast sensitiv er aktivert (Sann eller Usann). |
Leverandør |
Dette skal være SQLNCLI11 for SQL Server Native Client. |
PWD |
Passordet for SQL Server-pålogging. |
Server |
Navnet på en SQL Server-forekomst: Server på nettverket, en IP-adresse eller Configuration Manager-alias. |
ServerSPN |
SPN for serveren. |
Timeout |
Hvor lang tid (i sekunder) brukeren må vente før initialiseringen av datakilden er fullført. |
Trusted_Connection |
Angir om Windows-godkjenningsmodus eller brukernavn eller passord for SQL Server brukes til godkjenning av pålogging (Ja eller Nei). |
TrustServerCertificate |
Angir om et serversertifikat er godkjent (Sann eller Usann). |
UID |
Påloggingsnavnet for SQL Server-pålogging. |
Bruke kryptering for data |
Angi om dataene skal krypteres før de sendes ut over nettverket (Sann eller Usann). |
UseProcForPrepare |
Avskrevet nøkkelord. |
WSID |
Arbeidsstasjonens ID, nettverksnavnet for datamaskinen der programmet befinner seg. |