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 understøtter ikke mere end 255 samtidige brugere. Så når det er tid til, at din Access-database skal gå til næste niveau, kan du overføre til SQL Server. SQL Server (uanset om den er i det lokale miljø eller i Azure-cloudmiljøet) 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 de front-end-løsninger til Access, du har oprettet, og motiverer dig forhåbentligt til at bruge Access til fremtidige databaseløsninger. Brug Microsoft SQL Server Migration Assistant (SSMA) til at overføre korrekt, 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 gøre det nemmere at dele 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, idet SQL Server fungerer som en ny back-end for de data, der nu er placeret på en server.
Du kan derfor stadig vedligeholde 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 overtalelse for at migrere til SQL Server? Her er nogle yderligere fordele at tænke over:
- 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 trinvist eller fuldstændigt, 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 klarer sig normalt bedre end en Access-database, især med en stor database på terabytestørrelse. SQL Server behandler desuden forespørgsler meget hurtigere og effektivt ved at behandle forespørgsler parallelt ved hjælp af flere oprindelige tråde i en enkelt proces for at håndtere brugerforespørgsler.
- 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, der anvender 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 CPR-numre, kreditkortdata og adresser, der er fortrolige.
- Mulighed for øjeblikkelig genoprettelse Hvis operativsystemet går ned, eller strømmen går, kan SQL Server automatisk gendanne databasen til en ensartet tilstand i løbet af få minutter og uden handling fra databaseadministratorens side.
- Brug af VPN Access og VPN (Virtual Private Networks) kommer ikke overens. Men med SQL Server kan fjernbrugere stadig bruge Access-frontenddatabasen på en stationær computer og SQL Server-backend, 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-mulighed
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 Database-server. En enkelt database er ligesom en indeholdt database i SQL Server. Du kan også tilføje en elastisk pulje, som er en samling af databaser med et delt sæt ressourcer, der administreres via SQL Database-serveren. De mest almindeligt anvendte SQL Server-funktioner er tilgængelige med indbygget sikkerhedskopiering, programrettelser og genoprettelse. Men der er ingen garanteret nøjagtig vedligeholdelsestid, og migrering fra SQL Server kan være vanskelig.
- 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 sikkerhedskopieringer, rettelser, genoprettelse og er let at migrere fra SQL Server. Der er dog et lille antal SQL Server-funktioner, der ikke er tilgængelige, og der findes ingen garanteret nøjagtig vedligeholdelsestid.
- Azure Virtual Machine Denne indstilling giver dig mulighed for at køre SQL Server i en virtuel maskine i Azure-cloudmiljøet. Du har fuld kontrol over SQL Server-programmet og en nem migreringssti. Men du skal administrere dine sikkerhedskopier, programrettelser og genoprettelse.
Du kan finde flere oplysninger under Valg af databaseoverførselssti til Azure og Hvad er Azure SQL?.
Første trin
Der er et par problemer, du kan løse på forhånd, 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 relationerne mellem primære/fremmede nøgler Sørg for, at disse relationer er baseret på felter med ensartede datatyper og -størrelser. SQL Server understøtter ikke joinforbundne kolonner med forskellige datatyper og størrelser i fremmede nøglebegrænsninger.
- Fjerne kolonnen Vedhæftet fil SSMA overfører ikke tabeller, der indeholder kolonnen Vedhæftet fil.
Før du kører SSMA, skal du benytte 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 finde flere oplysninger under Beskytte dine data med processer til sikkerhedskopiering og gendannelse.
Tip Overvej at installere Microsoft SQL Server Express Edition på din stationære pc, som understøtter op til 10 GB, og som er en gratis og nemmere måde at gennemgå og kontrollere din overførsel på. Brug LocalDB som databaseforekomst, når du opretter forbindelse.
Tip Brug om muligt en separat 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ælger forespø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 at overføre flere objekter på et senere tidspunkt.
Bemærk Overførselsprocessen kan tage et stykke tid, afhængigt af størrelsen på databaseobjekterne 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 downloadede MSI-fil. Husk at installere den korrekte 32- eller 64-bit version til computeren.
- Når du har installeret SSMA, skal du åbne det 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 give grundlæggende oplysninger, f.eks. SQL Server-placering, Access-databasen og 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 "rowversion" 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 feltet "rowversion" til en forespørgsel, bruger Access det desuden til at vælge rækken igen efter en opdateringshandling. Dette forbedrer effektiviteten ved at hjælpe med at undgå skrivekonflikter og scenarier for sletning af poster, der kan opstå, når Access registrerer forskellige resultater fra den oprindelige afsendelse, f.eks. i forbindelse med flydende tal, datatyper og udløsere, der redigerer kolonner. Undgå dog at bruge feltet "rowversion" i formularer, rapporter eller VBA-kode. For mere information, se rowversion.
Bemærk Undgå forvirrende rækkeversioner 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å. - Hvis du vil angive præcise datatyper, skal du vælge Gennemse værktøjer>Kortlægning afprojektindstillinger>. Hvis du f.eks. kun gemmer engelsk tekst, kan du bruge datatypen varchar i stedet for nvarchar .
Konvertere objekter
SSMA konverterer Access-objekter til SQL Server-objekter, men kopierer ikke objekterne med det samme. SSMA leverer 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
- Indeks og standardværdier
- Kontrollere begrænsninger (tillad kolonneegenskab for nullængde, kolonnevalideringsregel, tabelvalidering)
Den bedste fremgangsmåde er at bruge SSMA-vurderingsrapporten, som viser konverteringsresultaterne, herunder fejl, advarsler, oplysende meddelelser, tidsestimater for udførelse af overførslen og individuelle trin til fejlrettelse, der skal udføres, før du rent faktisk flytter objekterne.
Konvertering af databaseobjekter tager objektdefinitionerne fra Access-metadataene, konverterer dem til en tilsvarende Transact-SQL-syntaks (T-SQL) 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.
Hvis du vil konvertere, indlæse og migrere objekter til SQL Server, skal du følge denne vejledning.
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æ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 følger med Windows. Ikke alene 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å alle computere, hvor den konverterede database bruges. Du kan finde flere oplysninger 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, der 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 på og redigere sammenkædede data afhængigt af de tilladelser, der er angivet af din SQL Server-databaseadministrator.
Bemærk Hvis du opretter en ODBC DSN, når du sammenkæder til din SQL Server-database under sammenkædningsprocessen, skal du enten oprette den samme DSN på alle computere, der bruger det nye program, eller programmatisk bruge den forbindelsesstreng, der er gemt i DSN-filen.
Du kan få flere oplysninger under Sammenkæd til eller importér data fra en Azure SQL Server-database og Importér eller sammenkæd med 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 igen. Du kan få flere oplysninger under Administrer sammenkædede tabeller.
Teste og revidere
I de følgende afsnit beskrives almindelige problemer, der kan opstå 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 en 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 SQL-datatypen bigint. Du kan bruge denne datatype til effektivt at beregne store tal, men den kræver, at du bruger Access 16 (16.0.7812 eller nyere) .accdb-databasefilformat, og den fungerer bedre med 64-bit versionen af Access. Du kan finde flere oplysninger under Brug datatypen Stort tal og Vælg mellem 64-bit- eller 32-bit-versionen af Office.
Ja/Nej Som standard konverteres en Ja/Nej-kolonne i Access til et SQL Server-bitfelt. For at undgå låsning af poster skal du sikre dig, at bitfeltet er indstillet til ikke at tillade NULL-værdier. I SSMA kan du markere bitkolonnen for at angive egenskaben Allow Nulls til NEJ. I TSQL skal du bruge sætningerne CREATE TABLE eller ALTER TABLE .
Dato og klokkeslæt Der er flere overvejelser om dato og klokkeslæt:
Hvis databasens kompatibilitetsniveau er 130 (SQL Server 2016) eller højere, og en sammenkædet tabel indeholder én eller flere datetime- eller datetime2-kolonner, returnerer tabellen meddelelsen #deleted i resultaterne. Få mere at vide under Access-sammenkædet tabel med SQL-Server database, der returnerer #deleted.
Brug Access-datatypen Dato/klokkeslæt til at tilknytte til datetime-datatypen. Brug den udvidede dato og klokkeslæt-datatype i Access til at knytte til datetime2-datatypen, som har et større dato- og klokkeslætsinterval. Du kan finde flere oplysninger under Brug af udvidet dato og klokkeslæt-datatype.
Når du forespørger efter datoer i SQL Server, skal du både tage højde for både klokkeslæt og dato. Det kunne f.eks. være:
- DateOrdered Between 1/1/19 and 1/31/19 omfatter muligvis ikke alle ordrer.
- DateOrdered Between 1/1/19 00:00:00 AM And 1/31/19 23:59:59 PM inkluderer 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 Remote BLOB store (RBS) til at gemme vedhæftede filer i SQL Server-databasen.
Link Access-tabeller har hyperlinkkolonner, som SQL Server ikke understøtter. Disse kolonner konverteres som standard 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 angiver 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 et afgrænset værdisæt. 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 under Sammenlign datatyper.
Bemærk Felter med flere værdier konverteres ikke.
Du kan finde flere oplysninger 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 anmodede data overføres til behandling i Microsoft Access. 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 videregives til dem. Forespørgsler kan være enkeltstående forespørgsler, SQL-sætninger i formular-/rapportpostkilder, datakilder for kombinationsbokse og lister i formularer, rapporter og tabelfelter og standard- eller valideringsregeludtryk. SQL Server kan ikke køre disse brugerdefinerede funktioner. Det kan være nødvendigt manuelt at ændre designet af disse funktioner 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 er at beslutte, hvornår du skal bruge lokale eller eksterne forespørgsler. Når du overfører dine data til SQL Server, flytter du også fra en filserver til en klient-server-databasemodel for databehandling. Følg disse generelle retningslinjer:
- Kør små, skrivebeskyttede forespørgsler på klienten for at få hurtigst mulig 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 i Oprette en gennemgangsforespørgsel.
Følgende er yderligere, anbefalede retningslinjer.
Læg 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: 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 til en læse-/skriveformular som postkilde.
- Brug en SQL-visning som postkilde til rapporter. Du bør 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. Du kan f.eks. lade egenskaben postkilde være tom, få brugerne til at vælge et filter i formularen og derefter udfylde egenskaben postkilde med filteret. Eller brug where-delsætningen i DoCmd.OpenForm og DoCmd.OpenReport til at få vist nøjagtigt de poster, som 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, nogle gange kaldet en hybridforespørgsel. Denne type forespørgsel kræver stadig, at Access downloader alle SQL Server-data 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 stater eller provinser i et land eller område. Statiske tabeller bruges ofte til filtrering og kan fungere bedre på Access-front-end.
Du kan finde flere oplysninger under Optimeringsrådgivning til databaseprogram, Brug Effektivitetsanalyse til at optimere en Access-database og Optimering af Microsoft Office Access-programmer, der er sammenkædet med SQL Server.
Se Også
Vejledning til overførsel af Azure-database
Microsoft Access til migrering, konvertering og databasekonvertering af SQL Server