Overfør en Access-database til SQL Server

Overfør en Access-database til SQL Server

Vi har alle begrænsninger, og en Access-database er ingen undtagelse. En Access-database har f.eks. en størrelsesgrænse på 2 GB og kan ikke understøtte mere end 255 samtidige brugere. Så når det er tid til, at din Access-database går videre til næste niveau, kan du overføre til SQL Server. SQL Server (enten lokalt eller i Azure-skyen) understøtter større mængder data, flere samtidige brugere og har større kapacitet end JET/ACE-databaseprogrammet. Denne vejledning giver dig en problemfri start på din SQL Server-rejse, hjælper med at bevare front end-løsninger i Access, som du har oprettet, og forhåbentligt giver dig mulighed for at bruge Access til fremtidige databaseløsninger. Guiden Databaseoverflytning blev fjernet fra Access i Access 2013, så nu kan du bruge Microsoft SQL Server -overførselsassistent (SSMA). Følg disse trin for at overføre uden problemer.

Faserne i databaseoverførsel til SQL Server

Inden du går i gang

De følgende afsnit indeholder baggrundsoplysninger og andre oplysninger, der kan hjælpe dig med at komme i gang.

Om opdelte databaser

Alle Access-databaseobjekter kan enten være i én databasefil, eller de kan gemmes i to databasefiler: en front end-database og en back end-database. Dette kaldes opdeling af databasen og er designet til at lette deling i et netværksmiljø. Back end-databasefilen må kun indeholde tabeller og relationer. Front end-filen må kun indeholde alle andre objekter, herunder formularer, rapporter, forespørgsler, makroer, VBA-moduler og sammenkædede tabeller til back end-databasen. Når du overfører en Access-database, svarer det til en opdelt database i, at SQL Server fungerer som en ny back-end for de data, der nu er placeret på en server.

Derfor kan du stadig bevare front end Access-databasen med sammenkædede tabeller til SQL Server-tabellerne. Du kan effektivt drage fordel af hurtig programudvikling, som en Access-database giver, sammen med skalerbarheden af SQL Server.

Fordele ved SQL Server

Har du stadig brug for noget hjælp til at overføre til SQL Server? Her er nogle flere fordele, du kan overveje:

  • Flere samtidige brugere    SQL Server kan håndtere mange flere samtidige brugere end Access og minimerer hukommelseskravet, når der tilføjes flere brugere.

  • Øget tilgængelighed    Med SQL Server kan du dynamisk sikkerhedskopiere, enten trinvis eller fuldført, databasen, mens den er i brug. Du behøver derfor ikke tvinge brugere til at afslutte databasen for at sikkerhedskopiere data.

  • Høj ydeevne og skalerbarhed    SQL Server-databasen fungerer normalt bedre end en Access-database, især med en database i stor terabytestørrelse. Desuden behandler SQL Server forespørgsler meget hurtigere og effektivt ved at behandle forespørgsler parallelt ved hjælp af flere oprindelige tråde i en enkelt proces til at håndtere brugeranmodninger.

  • Forbedret sikkerhed    MED en pålidelig forbindelse integreres SQL Server med Windows-systemsikkerhed for at give en enkelt integreret adgang til netværket og databasen og anvende det bedste fra begge sikkerhedssystemer. Det gør det meget nemmere at administrere komplekse sikkerhedsskemaer. SQL Server er det ideelle lager til følsomme oplysninger som f.eks. CPR-numre, kreditkortdata og adresser, der er fortrolige.

  • Øjeblikkelig genoprettelse     Hvis operativsystemet går ned, eller strømmen går ud, kan SQL Server automatisk gendanne databasen til en ensartet tilstand i løbet af minutter og uden handling fra databaseadministratorens side.

  • Brug af VPN    Access og VPN (Virtual Private Networks) kan ikke komme videre. Men med SQL Server kan eksterne brugere stadig bruge Access-front end-databasen på en stationær computer og SQL Server-back end'en, der er placeret bag VPN-firewallen.

  • Azure SQL Server    Ud over fordelene ved SQL Server tilbyder den dynamisk skalerbarhed uden nedetid, intelligent optimering, global skalerbarhed og tilgængelighed, udelukkelse af hardwareomkostninger og reduceret administration.

Vælg den bedste Azure SQL Server-mulighed

Hvis du overfører til Azure SQL Server, er der tre muligheder at vælge mellem, hver med forskellige fordele:

  • Enkelt database-/elasticpuljer    Denne indstilling har sit eget sæt ressourcer, der administreres via en SQL-databaseserver. En enkelt database er ligesom en database i SQL Server. Du kan også tilføje en elastic pulje, som er en samling af databaser med et delt sæt ressourcer, der administreres via SQL-databaseserveren. De mest almindeligt anvendte SQL Server-funktioner er tilgængelige med indbyggede sikkerhedskopier, programrettelser og gendannelse. Men der er ingen garanteret nøjagtig vedligeholdelsestid, og overførslen fra SQL Server kan være svær.

  • Administreret forekomst    Denne indstilling er en samling af system- og brugerdatabaser med et delt sæt ressourcer. En administreret forekomst er ligesom en forekomst af SQL Server-databasen, der er meget kompatibel med SQL Server i det lokale miljø. En administreret forekomst har indbyggede sikkerhedskopier, programrettelser, gendannelse og er nem at overføre fra SQL Server. Der er dog et lille antal SQL Server-funktioner, der ikke er tilgængelige, og ingen garanteret nøjagtig vedligeholdelsestid.

  • Azure Virtual Machine    Denne indstilling giver dig mulighed for at køre SQL Server inde i en virtuel maskine i Azure-skyen. Du har fuld kontrol over SQL Server-programmet og en nem overførselssti. Men du skal administrere dine sikkerhedskopier, rettelser og genoprettelse.

Du kan finde flere oplysninger i Vælge din databaseoverførselssti til Azure og vælge den rigtige SQL Server-indstilling i Azure.

Første trin

Der er et par problemer, du kan løse på forside, som kan hjælpe med at strømline overførselsprocessen, før du kører SSMA:

  • Tilføj tabelindekser og primære nøgler    Sørg for, at hver Access-tabel har et indeks og en primær nøgle. SQL Server kræver, at alle tabeller har mindst ét indeks og kræver, at en sammenkædet tabel har en primær nøgle, hvis tabellen kan opdateres.

  • Kontrollere relationer for primær/fremmed nøgle    Sørg for, at disse relationer er baseret på felter med ensartede datatyper og størrelser. SQL Server understøtter ikke sammenføjede kolonner med forskellige datatyper og størrelser i begrænsninger med fremmede nøgler.

  • Fjerne kolonnen Vedhæftet fil    SSMA overfører ikke tabeller, der indeholder kolonnen Vedhæftet fil.

Før du kører SSMA, skal du følge de første trin.

  1. Luk Access-databasen.

  2. Sørg for, at de aktuelle brugere, der har forbindelse til databasen, også lukker databasen.

  3. Hvis databasen er i .mdb-filformat,skal du fjerne sikkerhed på brugerniveau.

  4. Sikkerhedskopier din database. Du kan finde flere oplysninger under Beskyt dine data med processer til sikkerhedskopiering og gendannelse.

Tip    Overvej at installere Microsoft SQL Server Express-versionen på din computer, som understøtter op til 10 GB, og som er en gratis og nemmere måde at gennemgå og kontrollere overførslen på. Når du opretter forbindelse, skal du bruge LocalDB som databaseforekomst.

Tip    Hvis det er muligt, skal du bruge en enkeltstående version af Access. Hvis du kun kan bruge Microsoft 365, skal du bruge Access 2010-databaseprogrammet til at overføre din Access-database, når du bruger SSMA. Du kan finde flere oplysninger i Microsoft Access Database Engine 2010 Redistributable.

Kør SSMA

Microsoft leverer Microsoft SQL Server (SSMA) for at gøre overførslen nemmere. SSMA overfører primært tabeller og udvælgelsesforespørgsler uden parametre. Formularer, rapporter, makroer og VBA-moduler konverteres ikke. SQL Server Metadata Explorer viser dine Access-databaseobjekter og SQL Server-objekter, så du kan gennemse det aktuelle indhold i begge databaser. Disse to forbindelser gemmes i din overførselsfil, hvis du beslutter dig for at overføre flere objekter i fremtiden.

Bemærk    Overførselsprocessen kan tage lidt tid, afhængigt af størrelsen på dine databaseobjekter og mængden af data, der skal overføres.

  1. Hvis du vil overføre en database ved hjælp af SSMA, skal du først downloade og installere softwaren ved at dobbeltklikke på den downloadede MSI-fil. Sørg for at installere den rette 32- eller 64-bit version til computeren.

  2. Når du har installeret SSMA, skal du åbne den på skrivebordet, helst fra computeren med Access-databasefilen.

    Du kan også åbne den på en computer, der har adgang til Access-databasen fra netværket i en delt mappe.

  3. Følg de første instruktioner i SSMA for at give grundlæggende oplysninger som f.eks. SQL Server-placeringen, Access-databasen og objekter til overførsel, forbindelsesoplysninger, og om du vil oprette sammenkædede tabeller.

  4. Hvis du overfører til SQL Server 2016 eller nyere og vil opdatere en sammenkædet tabel, skal du tilføje en rækkeversionskolonne ved at vælge Gennemse værktøjer >Projektindstillinger > Generelt.

    Feltet rowversion hjælper med at undgå postkonflikter. Access bruger dette rowversion-felt i en sammenkædet SQL Server-tabel til at bestemme, hvornår posten sidst blev opdateret. Hvis du føjer feltet rowversion til en forespørgsel, bruger Access det til at vælge rækken igen efter en opdateringshandling. Dette forbedrer effektiviteten ved at hjælpe med at undgå skrivekonfliktfejl og scenarier for sletning af poster, der kan opstå, når Access registrerer forskellige resultater fra den oprindelige indsendelse, f.eks. ved datatyper med flydende tal og udløsere, der redigerer kolonner. Undgå dog at bruge rækkeversionsfeltet i formularer, rapporter eller VBA-kode. Du kan finde flere oplysninger i rowversion.

    Bemærk    Undgå forvirrende rækkeversion med tidsstempler. Selvom tidsstemplet for nøgleordet er et synonym for rækkeversion i SQL Server, kan du ikke bruge rækkeversion som en måde at tidsstemple en dataindtastning på.

  5. Hvis du vil angive præcise datatyper, skal du vælge Gennemse > Projektindstillinger >Typetilknytning. Hvis du f.eks. kun gemmer engelsk tekst, kan du bruge varcharet i stedet for datatypen nvarchar.

Konvertér objekter

SSMA konverterer Access-objekter til SQL Server-objekter, men den kopierer ikke objekterne med det samme. SSMA indeholder en liste over følgende objekter, der skal overføres, så du kan beslutte, om du vil flytte dem til SQL Server-databasen:

  • Tabeller og kolonner

  • Vælg forespørgsler uden parametre.

  • Primære og fremmede nøgler

  • Indekser og standardværdier

  • Kontrollér begrænsninger (tillad kolonneegenskab af længden nul, kolonnevalideringsregel, tabelvalidering)

Som bedste fremgangsmåde skal du bruge SSMA-vurderingsrapporten, som viser konverteringsresultaterne, herunder fejl, advarsler, informationsmeddelelser, tidsestimeringer for udførelse af overførslen og individuelle trin til rettelser af fejl, før du rent faktisk flytter objekterne.

Konvertering af databaseobjekter tager objektdefinitionerne fra Access-metadataene, konverterer dem til tilsvarende Transact-SQL (T-SQL)-syntaksog indlæser derefter disse oplysninger i projektet. Du kan derefter få vist SQL Server- eller SQL Azure-objekterne og deres egenskaber ved hjælp af SQL Server eller SQL Azure Metadata Explorer.

Følg denne vejledning for at konvertere, indlæse og overføre objekter tilSQL Server.

Tip    Når du har overført din Access-database, kan du gemme projektfilen til senere brug, så du kan overføre dine data igen til test eller den endelige overførsel.

Sammenkæde tabeller

Overvej at installere den nyeste version af SQL Server OLE DB- og ODBC-driverne i stedet for at bruge de oprindelige SQL Server-drivere, der leveres med Windows. Ikke blot er de nyere drivere hurtigere, men de understøtter også nye funktioner i Azure SQL, som de tidligere drivere ikke gør. Du kan installere driverne på hver enkelt computer, hvor den konverterede database bruges. Du kan finde flere oplysninger i Microsoft OLE DB-driver 18 til SQL Server og Microsoft ODBC-driver 17 til SQL Server.

Når du har overført Access-tabellerne, kan du linke til tabellerne i SQL Server, som nu hoster dine data. Sammenkædning direkte fra Access giver dig også en enklere måde at få vist dine data på i stedet for at bruge de mere komplekse ADMINISTRATIONsværktøjer til SQL Server.  Du kan forespørge efter og redigere sammenkædede data afhængigt af de tilladelser, der er konfigureret af administratoren af SQL Server-databasen.

Bemærk    Hvis du opretter en ODBC DSN, når du opretter en kæde til SQL Server-databasen under sammenkædningsprocessen, skal du enten oprette den samme DSN på alle computere, der bruger det nye program, eller ved hjælp af et program bruge forbindelsesstrengen, der er gemt i DSN-filen.

Få mere at vide under Sammenkæd til eller importér data fra en Azure SQL Server-database, og importér eller opret en kæde til data i en SQL Server-database.

Tip   Glem ikke at bruge Manager til sammenkædede tabeller i Access til nemt at opdatere og genlinke tabeller. Du kan finde flere oplysninger i Administrere sammenkædede tabeller.

Test og rev revne

I de følgende afsnit beskrives almindelige problemer, du kan støde på under overførslen, og hvordan du kan håndtere dem.

Forespørgsler

Kun udvælgelsesforespørgsler konverteres. andre forespørgsler er ikke, herunder udvælgelsesforespørgsler, der tager parametre. Nogle forespørgsler konverteres muligvis ikke fuldstændigt, og SSMA rapporterer forespørgselsfejl under konverteringsprocessen. Du kan manuelt redigere objekter, der ikke konverteres, ved hjælp af T-SQL-syntaks. Syntaksfejl kan også kræve manuel konvertering af Access-specifikke funktioner og datatyper til SQL Server-funktioner. Du kan finde flere oplysninger i Sammenligning af Access SQL og SQL Server TSQL.

Datatyper

Access og SQL Server har lignende datatyper, men vær opmærksom på følgende potentielle problemer.

Stort tal    Datatypen Stort tal indeholder en ikke-monetær, numerisk værdi og er kompatibel med datatypen SQL bigint. Du kan bruge denne datatype til effektivt at beregne store tal, men det kræver, at du bruger Access 16(16.0.7812 eller nyere) .accdb-databasefilformat og fungerer bedre med 64-bit versionen af Access. Du kan finde flere oplysninger under Brug af datatypen Stort tal og Vælg mellem 64-bit- eller 32-bit-versionen af Office.

Ja/Nej    En Ja/Nej-kolonne i Access konverteres som standard til et SQL Server-bitfelt. For at undgå postlåsning skal du sørge for, at bitfeltet er indstillet til ikke at tillade NULL-værdier. I SSMA kan du vælge bitkolonnen for at angive egenskaben Tillad nuller til NEJ. I TSQL skal du bruge CREATE TABLE- ellerALTER TABLE-sætningerne.

Dato og klokkeslæt    Der er flere overvejelser om dato og klokkeslæt:

  • Hvis kompatibilitetsniveauet for databasen er 130 (SQL Server 2016) eller højere, og en sammenkædet tabel indeholder en eller flere datetime- eller datetime2-kolonner, returnerer tabellen muligvis meddelelsen #deleted i resultaterne. Du kan finde flere oplysninger i access-sammenkædede tabeller SQL-Server databasen returnerer #deleted.

  • Brug datatypen Dato og klokkeslæt i Access til at knytte til datatypen datetime. Brug udvidet dato og klokkeslæt-datatype i Access til at knytte til datatypen datetime2, som har et større dato- og tidsinterval. Du kan finde flere oplysninger i Brug af udvidet dato og klokkeslæt-datatype.

  • Når du forespørger efter datoer i SQL Server, skal du tage højde for klokkeslæt og dato. For eksempel:

    • Datobestilt mellem 1-1-2019 og 31-01-2019 medtager muligvis ikke alle ordrer.

    • Datobestilt mellem 01-01-19 00:00:00 og 31-01-19 11:59:59 omfatter alle ordrer.

Vedhæftet fil   Datatypen Vedhæftet fil gemmer en fil i Access-databasen. I SQL Server har du flere muligheder, du bør overveje. Du kan udtrække filerne fra Access-databasen og derefter overveje at gemme links til filerne i din SQL Server-database. Du kan også bruge FILESTREAM, FileTables eller RBS (Remote BLOB store) til at gemme vedhæftede filer i SQL Server-databasen.

Hyperlink    Access-tabeller har linkkolonner, som SQL Server ikke understøtter. Som standard konverteres disse kolonner til nvarchar(max) kolonner i SQL Server, men du kan tilpasse tilknytningen for at vælge en mindre datatype. I din Access-løsning kan du stadig bruge linkfunktionsmåden i formularer og rapporter, hvis du indstiller egenskaben Link for kontrolelementet til sand.

Felt med flere værdier    Feltet med flere værdier i Access konverteres til SQL Server som et ntext-felt, der indeholder det afgrænsede sæt af værdier. Da SQL Server ikke understøtter datatyper med flere værdier, der afspejler en mange-til-mange-relation, kræves der muligvis arbejde på design og konvertering.

Du kan finde flere oplysninger om tilknytning af Access- og SQL Server-datatyper i Sammenlign datatyper.

Bemærk    Felter med flere værdier konverteres ikke og er udgået i Access 2010.

Få mere at vide under Dato- og klokkeslætstyper,Streng- og binære typerog Numeriske typer.

Visual Basic

Selvom VBA ikke understøttes af SQL Server, skal du være opmærksom på følgende mulige problemer:

VBA-funktioner i Forespørgsler    Access-forespørgsler understøtter VBA-funktioner på data i en forespørgselskolonne. Men Access-forespørgsler, der bruger VBA-funktioner, kan ikke køres på SQL Server, så alle de ønskede data sendes til behandling i Microsoft Access. I de fleste tilfælde skal disse forespørgsler konverteres til gennemløbsforespørgsler.

Brugerdefinerede funktioner i forespørgsler    Microsoft Access-forespørgsler understøtter brugen af funktioner, der er defineret i VBA-moduler til at behandle de data, der overføres til dem. Forespørgsler kan være enkeltstående forespørgsler, SQL-sætninger i formular-/rapportpostkilder, datakilder for kombinationsfelter og listefelter i formularer, rapporter og tabelfelter samt standard- eller valideringsregeludtryk. SQL Server kan ikke køre disse brugerdefinerede funktioner. Det kan være nødvendigt manuelt at omdesigne disse funktioner og konvertere dem til gemte procedurer på SQL Server.

Optimer ydeevnen

Den vigtigste måde at optimere ydeevnen med din nye back-end SQL Server er at beslutte, hvornår du skal bruge lokale forespørgsler eller fjernforespørgsler. Når du overfører dine data til SQL Server, flytter du også fra en filserver til en model af databehandling på en klientserverdatabase. Følg disse generelle retningslinjer:

  • Kør små skrivebeskyttede forespørgsler på klienten for at få hurtigst adgang.

  • Kør lange, læse-/skriveforespørgsler på serveren for at drage fordel af den større processorkraft.

  • Minimer netværkstrafik med filtre og sammenlægning for kun at overføre de data, du har brug for.

Optimer ydeevnen i klientserverdatabasemodellen

Du kan finde flere oplysninger i Oprette en gennemløbsforespørgsel.

Følgende er yderligere anbefalede retningslinjer.

Placere logik på serveren     Programmet kan også bruge visninger, brugerdefinerede funktioner, gemte procedurer, beregnede felter og udløsere til at centralisere og dele programlogik, forretningsregler og politikker, komplekse forespørgsler, datavalidering og referentiel integritetskode på serveren i stedet for på klienten. Spørg dig selv, om denne forespørgsel eller opgave kan udføres bedre og hurtigere på serveren? Til sidst skal du teste hver forespørgsel for at sikre optimal ydeevne.

Brug visninger i formularer og rapporter    Gør følgende i Access:

  • For formularer skal du bruge en SQL-visning til en skrivebeskyttet formular og en SQL-indekseret visning til en læse-/skriveformular som postkilde.

  • For rapporter skal du bruge en SQL-visning som postkilde. Du kan dog oprette en separat visning for hver rapport, så du nemmere kan opdatere en bestemt rapport uden at påvirke andre rapporter.

Minimer indlæsning af data i en formular eller rapport    Vis ikke data, før brugeren beder om dem. Bevar f.eks. egenskaben Postkilde tom, få brugerne til at vælge et filter i formularen, og udfyld derefter egenskaben Postkilde med filteret. Eller brug where-delsætningen i DoCmd.OpenForm og DoCmd.OpenReport til at vise den eller de nøjagtige poster, brugeren skal bruge. Overvej at deaktivere postnavigation.

Vær forsigtig med heterogene forespørgsler   Undgå at køre en forespørgsel, der kombinerer en lokal Access-tabel og en sammenkædet SQL Server-tabel, som nogle gange kaldes en hybridforespørgsel. Denne type forespørgsel kræver stadig, at Access henter alle SQL Server-dataene til den lokale computer og derefter kører forespørgslen. Den kører ikke forespørgslen i SQL Server.

Hvornår skal jeg bruge lokale tabeller?    Overvej at bruge lokale tabeller til data, der sjældent ændres, f.eks. listen over stater eller provinser i et land eller område. Statiske tabeller bruges ofte til filtrering og kan fungere bedre på front-enden i Access.

Du kan finde flere oplysninger under Rådgiver til justering af databaseprogrammer,bruge Ydeevneanalyse til at optimere en Access-databaseog optimere Microsoft Office Access-programmer, der er kædet sammen med SQL Server.

Se også

Vejledning til overførsel af Azure-database

Microsoft-blog om dataoverførsel

Microsoft Access til SQL Server-overførsel, konvertering oghttps://www.fmsinc.com/consulting/sqlserverupsizing.aspx

Måder at dele en Access-skrivebordsdatabase på

Har du brug for mere hjælp?

Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×