Vi har alle begrænsninger, og en Access-database er ingen undtagelse. En Access-database har f.eks. en størrelsesbegrænsning 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 det næste niveau, kan du overføre til SQL Server. SQL Server (uanset om det er 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 Access-front end-løsninger, du har oprettet, og motiverer dig forhåbentlig til at bruge Access til fremtidige databaseløsninger. Brug Microsoft SQL Server Migration Assistant (SSMA) til at overføre korrekt, og følg disse trin.
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 at opdele 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, ligner den en opdelt database i den PÅGÆLDENDE 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 udnytte fordelene ved hurtig programudvikling, som en Access-database giver, sammen med skalerbarheden af SQL Server.
SQL Server-fordele
Har du stadig brug for noget overbevisende for at overføre til SQL Server? Her er nogle ekstra fordele, du kan overveje:
-
Flere samtidige brugere SQL Server kan håndtere mange flere samtidige brugere end Access og minimerer kravene til hukommelse, når der tilføjes flere brugere.
-
Øget tilgængelighed Med SQL Server kan du dynamisk sikkerhedskopiere databasen, enten trinvist eller fuldstændigt, 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 stor database i terabytestørrelse. DESUDEN behandler SQL Server forespørgsler meget hurtigere og effektivt ved at behandle forespørgsler parallelt ved at bruge flere oprindelige tråde i en enkelt proces til at håndtere brugeranmodninger.
-
Forbedret sikkerhed Ved hjælp af en pålidelig forbindelse integreres SQL Server med Windows-systemsikkerhed for at give en enkelt integreret adgang til netværket og databasen, hvilket anvender det bedste fra begge sikkerhedssystemer. Det gør det meget nemmere at administrere komplekse sikkerhedssystemer. SQL Server er det ideelle lager til følsomme oplysninger, f.eks. CPR-numre, kreditkortdata og adresser, der er fortrolige.
-
Øjeblikkelig gendannelse Hvis operativsystemet går ned, eller strømmen slukkes, kan SQL Server automatisk gendanne databasen til en ensartet tilstand i løbet af få minutter og uden nogen databaseadministratorindgrins.
-
Brug af VPN Access og VPN (Virtual Private Networks) kan ikke enes. Men med SQL Server kan fjernbrugere stadig bruge Access-front end-databasen på et skrivebord og SQL Server-back-enden, der er placeret bag VPN-firewallen.
-
Azure SQL Server Ud over fordelene ved SQL Server tilbyder dynamisk skalerbarhed uden nedetid, intelligent optimering, global skalerbarhed og tilgængelighed, eliminering af hardwareomkostninger og reduceret administration.
Vælg den bedste Azure SQL Server-indstilling
Hvis du overfører til Azure SQL Server, er der tre muligheder at vælge mellem, hver med forskellige fordele:
-
Enkelt database/elastiske puljer Denne indstilling har sit eget sæt ressourcer, der administreres via en SQL-databaseserver. En enkelt database er ligesom en indeholdt database i SQL Server. Du kan også tilføje en elastisk pulje, som er en samling 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 genoprettelse. Men der er ingen garanti for 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, genoprettelse og er let at overføre fra SQL Server. Der er dog et lille antal SQL Server-funktioner, der ikke er tilgængelige, og ingen garanteret præcis 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, programrettelser og genoprettelse.
Du kan finde flere oplysninger under Vælge din databaseoverførselssti til Azure og Hvad er Azure SQL?.
Første trin
Der er et par problemer, du kan løse på et frontlinjet trin, 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.
-
Kontrollér relationer mellem primære og fremmede nøgler Sørg for, at disse relationer er baseret på felter med ensartede datatyper og -størrelser. SQL Server understøtter ikke sammenkædede kolonner med forskellige datatyper og -størrelser i begrænsninger for 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 udføre følgende første trin.
-
Luk Access-databasen.
-
Sørg for, at de aktuelle brugere, der har forbindelse til databasen, også lukker databasen.
-
Hvis databasen er i .mdb filformat, skal du fjerne sikkerhed på brugerniveau.
-
Sikkerhedskopiér din database. Du kan få mere at vide under Beskyt dine data med processer til sikkerhedskopiering og gendannelse.
Tip! Overvej at installere Microsoft SQL Server Express-udgaven på skrivebordet, 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.
Kør SSMA
Microsoft leverer Microsoft SQL Server Migration Assistant (SSMA) for at gøre overførslen nemmere. SSMA overfører hovedsageligt 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 overførselsfilen, 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.
-
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 hentede MSI-fil. Sørg for at installere den relevante 32- eller 64-bit version til computeren.
-
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.
-
Følg startvejledningen i SSMA for at angive grundlæggende oplysninger som f.eks. SQL Server-placeringen, Access-databasen og de objekter, der skal overføres, forbindelsesoplysninger, og om du vil oprette sammenkædede tabeller.
-
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 rækkeversion hjælper med at undgå postkonflikter. Access bruger dette rækkeversionsfelt i en sammenkædet SQL Server-tabel til at bestemme, hvornår posten sidst blev opdateret. Hvis du føjer rækkeversionsfeltet til en forespørgsel, bruger Access det også 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. kan forekomme med flydende taldatatyper og udløsere, der ændrer kolonner. Undgå dog at bruge rækkeversionsfeltet i formularer, rapporter eller VBA-kode. Du kan få mere at vide under rækkeversion.
Bemærk! Undgå at forveksle 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 tidsstemplere en dataindtastning på.
-
Hvis du vil angive nøjagtige datatyper, skal du vælge Gennemse værktøjer > Projektindstillinger > Typetilknytning. Hvis du f.eks. kun gemmer engelsk tekst, kan du bruge datatypen varchar i stedet for nvarchar .
Konvertér objekter
SSMA konverterer Access-objekter til SQL Server-objekter, men det 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 uden længde, kolonnevalideringsregel, tabelvalidering)
Som bedste fremgangsmåde kan du bruge SSMA-vurderingsrapporten, som viser konverteringsresultaterne, herunder fejl, advarsler, oplysende meddelelser, tidsestimater for udførelse af overførslen og individuelle fejlrettelser, der skal udføres, før du rent faktisk flytter objekterne.
Konvertering af databaseobjekter tager objektdefinitionerne fra Access-metadataene, konverterer dem til tilsvarende Transact-SQL (T-SQL) syntaks og 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 til SQL Server.
Tip! Når du har overført din Access-database, skal du gemme projektfilen til senere brug, så du kan overføre dine data igen til test eller endelig overførsel.
Sammenkæd 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 sammen med Windows. De nyere drivere er ikke kun hurtigere, de understøtter også nye funktioner i Azure SQL, som de tidligere drivere ikke gør. Du kan installere driverne på hver computer, hvor den konverterede database bruges. Du kan få mere at vide under 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 oprette en kæde 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 SQL Server-administrationsværktøjer. Du kan forespørge om 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 det samme DSN på alle computere, der bruger det nye program, eller bruge forbindelsesstrengen, der er gemt i DSN-filen.
Du kan få mere at vide under Oprette kæde til eller importere data fra en Azure SQL Server-database og Importere eller oprette en kæde til data i en SQL Server-database.
Tip! Glem ikke at bruge Styring af sammenkædede tabeller i Access til nemt at opdatere og sammenkæde tabeller. Du kan få mere at vide under Administrer sammenkædede tabeller.
Test og revider
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 konverterer muligvis ikke helt, 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, at Access-specifikke funktioner og datatyper konverteres manuelt 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 gemmer en ikke-monetær, numerisk værdi og er kompatibel med sql-datatypen bigint. Du kan bruge denne datatype til effektivt at beregne store tal, men det kræver brug af Access 16-filformatet (16.0.7812 eller nyere) og fungerer bedre med 64-bit versionen af Access. Du kan få mere at vide 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 markere bitkolonnen for at angive egenskaben Tillad null-værdier til NEJ. I TSQL skal du bruge sætningerne CREATE TABLE eller ALTER TABLE .
Dato og klokkeslæt Der er flere overvejelser i forbindelse med 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ædet tabel til SQL-Server database returnerer #deleted.
-
Brug datatypen Dato og klokkeslæt i Access til at knytte til datatypen datetime. Brug den udvidede dato og klokkeslæt-datatype i Access til at knytte til datatypen datetime2 , som har et større dato- og tidsinterval. Du kan få mere at vide under 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 samt dato. Det kunne f.eks. være:
-
DateOrdered Between 01-01-2019 og 31-01-2019 omfatter muligvis ikke alle ordrer.
-
DateOrdered Between 1/1/19 00:00:00 And 31-01-19 11:59:59 PM omfatter alle ordrer.
-
Vedhæftet fil Datatypen Vedhæftet fil gemmer en fil i Access-databasen. I SQL Server har du flere muligheder at overveje. Du kan udtrække filerne fra Access-databasen og derefter overveje at gemme links til filerne i SQL Server-databasen. Du kan også bruge FILESTREAM, FileTables eller Remote BLOB Store (RBS) til at bevare vedhæftede filer, der er gemt i SQL Server-databasen.
Link Access-tabeller har hyperlinkkolonner, som SQL Server ikke understøtter. Som standard konverteres disse kolonner til kolonnerne nvarchar(max) i SQL Server, men du kan tilpasse tilknytningen for at vælge en mindre datatype. I din Access-løsning kan du stadig bruge hyperlinkfunktionsmåden i formularer og rapporter, hvis du indstiller egenskaben Link for kontrolelementet til sand.
Felt med flere værdier Access-feltet med flere værdier 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 få mere at vide om tilknytning af Access- og SQL Server-datatyper under Sammenlign datatyper.
Bemærk! Felter med flere værdier konverteres ikke.
Du kan få mere at vide under Dato- og klokkeslætstyper, Streng og binære typer og 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 ønskede data overføres til Microsoft Access til behandling. I de fleste tilfælde skal disse forespørgsler konverteres til pass-through-forespørgsler.
Brugerdefinerede funktioner i forespørgsler Microsoft Access-forespørgsler understøtter brugen af funktioner, der er defineret i VBA-moduler, til at behandle 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 lister i formularer, rapporter og tabelfelter samt standard- eller valideringsregeludtryk. SQL Server kan ikke køre disse brugerdefinerede funktioner. Du skal muligvis omdesigne disse funktioner manuelt og konvertere dem til lagrede procedurer på SQL Server.
Optimer ydeevnen
Langt den vigtigste måde at optimere ydeevnen med din nye back-end SQL Server på 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 klientserverdatabasemodel for databehandling. 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 udnytte den større processorkraft.
-
Minimer netværkstrafik med filtre og sammenlægning for kun at overføre de data, du har brug for.
Du kan finde flere oplysninger under Opret en pass-through-forespørgsel.
Følgende er yderligere, anbefalede retningslinjer.
Placere logik på serveren Dit program kan også bruge visninger, brugerdefinerede funktioner, lagrede 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, kan denne forespørgsel eller opgave udføres på serveren bedre og hurtigere? Til sidst skal du teste hver forespørgsel for at sikre optimal ydeevne.
Brug af 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 for en læse-/skriveformular som postkilde.
-
For rapporter skal du bruge en SQL-visning som postkilde. Opret dog en separat visning for hver rapport, så du nemmere kan opdatere en bestemt rapport uden at påvirke andre rapporter.
Minimere indlæsning af data i en formular eller rapport Vis ikke data, før brugeren beder om det. Hold f.eks. egenskaben postkilde tom, få brugerne til at vælge et filter i formularen, og udfyld derefter egenskaben postkilde med dit filter. Eller brug where-delsætningen i DoCmd.OpenForm og DoCmd.OpenReport til at vise de nøjagtige poster, brugeren skal bruge. Overvej at slå postnavigation fra.
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, nogle gange kaldet en hybridforespørgsel. Denne type forespørgsel kræver stadig, at Access downloader 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 du bruge lokale tabeller? Overvej at bruge lokale tabeller til data, der sjældent ændres, f.eks. listen over delstater eller provinser i et land eller område. Statiske tabeller bruges ofte til filtrering og kan fungere bedre i Front End i Access.
Du kan få mere at vide under Database Engine Tuning Advisor, Brug Ydeevneanalyse til at optimere en Access-database og Optimering af Microsoft Office Access-programmer, der er sammenkædet med SQL Server.
Se også
Vejledning i overførsel af Azure-database
Microsoft Access til SQL Server-overførsel, konvertering og tilpasning af størrelse