Migrera en Access-databas till SQL Server

Migrera en Access-databas till SQL Server

Vi har alla begränsningar och en Access-databas är inget undantag. En Access-databas har till exempel en storleksgräns på 2 GB och har inte stöd för fler än 255 samtidiga användare. När det är dags för Access-databasen att gå till nästa nivå kan du alltså migrera till SQL Server. SQL Server (lokalt eller i Azure-molnet) stöder större datamängder, flera samtidiga användare och har större kapacitet än JET/ACE-databasmotorn. I den här guiden får du en smidig start på resan med SQL Server, hjälper till att bevara Access frontend-lösningar du skapat och förhoppningsvis vill du motivera att använda Access för framtida databaslösningar. Storleksguiden togs bort från Access i Access 2013, så nu kan du använda Microsoft SQL Server migreringsassistenten (SSMA). Följ de här stegen för att migrera.

Stegen i databasmigrering till SQL Server

Innan du börjar

Följande avsnitt innehåller bakgrundsinformation och annan information som hjälper dig att komma igång.

Om delade databaser

Alla Access-databasobjekt kan antingen finnas i en databasfil eller lagras i två databasfiler: en frontend-databas och en backend-databas. Detta kallas för att dela upp databasen och är utformat för att underlätta delning i en nätverksmiljö. Backend-databasfilen får bara innehålla tabeller och relationer. Frontend-filen får bara innehålla alla andra objekt, inklusive formulär, rapporter, frågor, makron, VBA-moduler och länkade tabeller till backend-databasen. När du migrerar en Access-databas fungerar den ungefär som en uppdelad databas eftersom SQL Server fungerar som en ny serverslut för de data som nu finns på en server.

Därför kan du fortfarande underhålla Access-frontend-databasen med länkade tabeller till SQL Server-tabellerna. Du kan härleda fördelarna med snabb programutveckling som en Access-databas tillhandahåller, tillsammans med skalbarheten i SQL Server.

Fördelar med SQL Server

Behöver du fortfarande en del övertygande för att migrera till SQL Server? Här är några fler fördelar att tänka på:

  • Fler samtidiga användare    SQL Server kan hantera många fler samtidiga användare än Access och minimerar minneskraven när fler användare läggs till.

  • Ökad tillgänglighet    Med SQL Server kan du dynamiskt säkerhetskopiera, antingen stegvis eller fullständig, databasen medan den används. Med andra ord behöver du inte tvinga användarna att avsluta sitt arbete och stänga databasen när du vill säkerhetskopiera databasen.

  • Hög prestanda och skalbarhet    SQL Server-databasen fungerar normalt bättre än en Access-databas, särskilt med en stor databas med terabytestorlek. SQL Server bearbetar frågor mycket snabbare och effektivt genom att parallellt bearbeta frågor, med hjälp av flera interna trådar i en enda process för att hantera användarförfrågningar.

  • Förbättrad säkerhet    Med en betrodd anslutning integreras SQL Server med Windows systemsäkerhet för att ge en enda integrerad åtkomst till nätverket och databasen och utnyttja det bästa av båda säkerhetssystemen. Det gör det mycket enklare att administrera komplexa säkerhetsscheman. SQL Server är den perfekta lagringen för känslig information som personnummer, kreditkortsdata och konfidentiella adresser.

  • Omedelbar återställning     Om operativsystemet kraschar eller strömmen går ut kan SQL Server automatiskt återställa databasen till ett konsekvent tillstånd på bara några minuter utan att databasadministratören behöver ingripa.

  • Användning av VPN    Åtkomst och virtuella privata nätverk (VPN) kommer inte med. Men med SQL Server kan fjärranvändare fortfarande använda Access frontend-databasen på ett skrivbord och SQL Server-serverbacken bakom VPN-brandväggen.

  • Azure SQL Server    Förutom fördelarna med SQL Server erbjuder dynamisk skalbarhet utan driftavbrott, intelligent optimering, global skalbarhet och tillgänglighet, uteslutning av maskinvarukostnader och minskad administration.

Välj det bästa Azure SQL Server-alternativet

Om du migrerar till Azure SQL Server finns det tre alternativ att välja mellan, var och en med olika fördelar:

  • Enkel databas/pooler med pooler    Det här alternativet har en egen uppsättning resurser som hanteras via en SQL Database-server. En enda databas är som en databas i SQL Server. Du kan också lägga till en pool med pooler med pooler, som är en samling databaser med en delad uppsättning resurser som hanteras via SQL Database-servern. De vanligaste SQL Server-funktionerna är tillgängliga med inbyggda säkerhetskopior, korrigeringar och återställning. Men det finns ingen garanterad exakt tid för underhåll och migrering från SQL Server kan vara svårt.

  • Hanterad instans    Det här alternativet är en samling system- och användardatabaser med en delad uppsättning resurser. En hanterad instans är som en instans av SQL Server-databasen som är kompatibel med sql Server lokalt. En hanterad instans har inbyggda säkerhetskopior, korrigeringar, återställning och är enkel att migrera från SQL Server. Det finns dock ett litet antal SQL Server-funktioner som inte är tillgängliga och som inte garanterad exakt underhållstid.

  • Virtuell Azure-dator    Med det här alternativet kan du köra SQL Server i en virtuell dator i Azure-molnet. Du har full kontroll över SQL Server-motorn och en enkel migreringsväg. Men du måste hantera dina säkerhetskopior, korrigeringar och återställningar.

Mer information finns i Välja migreringssökväg för databas till Azure och välja rätt SQL Server-alternativ i Azure.

Första stegen

Det finns några problem du kan åtgärda som kan effektivisera migreringsprocessen innan du kör SSMA:

  • Lägga till tabellindex och primärnycklar    Kontrollera att varje Access-tabell har ett index och en primärnyckel. FÖR SQL Server krävs att alla tabeller har minst ett index och att en länkad tabell har en primärnyckel om tabellen kan uppdateras.

  • Kontrollera relationer mellan primärnyckel och primärnyckel    Kontrollera att dessa relationer är baserade på fält med konsekventa datatyper och storlekar. SQL Server stöder inte sammanslagna kolumner med olika datatyper och storlekar för externa nyckelvillkor.

  • Ta bort kolumnen Bifogad fil    SSMA migrerar inte tabeller som innehåller kolumnen Bifogad fil.

Innan du kör SSMA ska du göra följande.

  1. Stäng Access-databasen.

  2. Se till att de aktuella användarna som är anslutna till databasen också stänger databasen.

  3. Om databasen är i .mdb-filformatettar du bort säkerhet på användarnivå.

  4. Backa upp databasen. Mer information finns i Skydda dina data med säkerhetskopierings- och återställningsprocesser.

Tips    Överväg att installera Microsoft SQL Server Express-versionen på skrivbordet med stöd för upp till 10 GB och är ett kostnadsfritt och enklare sätt att gå igenom och kontrollera migreringen. När du ansluter använder du LocalDB som databasinstans.

Tips    Använd om möjligt en fristående version av Access. Om du bara kan använda Microsoft 365 kan du migrera Access-databasen med Access 2010-databasmotorn när du använder SSMA. Mer information finns i Microsoft Access Database Engine 2010 Redistributable.

Kör SSMA

Microsoft tillhandahåller Microsoft SQL Server migreringsassistenten (SSMA) för att underlätta migreringen. SSMA migrerar huvudsakligen tabeller och urvalsfrågor utan parametrar. Formulär, rapporter, makron och VBA-moduler konverteras inte. SQL Server Metadata Explorer visar dina Access-databasobjekt och SQL Server-objekt så att du kan granska det aktuella innehållet i båda databaserna. De här två anslutningarna sparas i migreringsfilen om du bestämmer dig för att överföra ytterligare objekt i framtiden.

Obs!    Migreringsprocessen kan ta lite tid beroende på storleken på databasobjekten och mängden data som måste överföras.

  1. Om du vill migrera en databas med SSMA måste du först hämta och installera programvaran genom att dubbelklicka på den nedladdade MSI-filen. Se till att installera rätt 32- eller 64-bitarsversion för datorn.

  2. När du har installerat SSMA öppnar du den på skrivbordet, helst från datorn med Access-databasfilen.

    Du kan också öppna den på en dator som har åtkomst till Access-databasen från nätverket i en delad mapp.

  3. Följ de första anvisningarna i SSMA för att tillhandahålla grundläggande information som SQL Server-platsen, Access-databasen och objekt som ska migreras, anslutningsinformation och om du vill skapa länkade tabeller.

  4. Om du migrerar till SQL Server 2016 eller senare och vill uppdatera en länkad tabell lägger du till en rowversion-kolumn genom att välja Granska verktyg > Project-inställningar > Allmänt.

    Fältet rowversion hjälper dig att undvika postkonflikter. Access använder det här rowversion-fältet i en länkad SQL Server-tabell för att avgöra när posten uppdaterades senast. Om du lägger till fältet rowversion i en fråga används det också för att markera raden igen efter en uppdateringsåtgärd. Det förbättrar effektiviteten genom att hjälpa till att undvika fel i skrivkonflikter och registrera borttagningsscenarier som kan inträffa när Access identifierar olika resultat från den ursprungliga inskickningen, till exempel kan uppstå med datatyper för flyttal och utlösare som ändrar kolumner. Undvik dock att använda fältet rowversion i formulär, rapporter eller VBA-kod. Mer information finns i rowversion.

    Obs!    Undvik att blanda ihop rowversion med tidsstämplar. Även om nyckelordet tidsstämpel är en synonym för rowversion i SQL Server kan du inte använda rowversion som ett sätt att tidsstämpeln en datainmatning.

  5. Om du vill ange exakta datatyper väljer du > Under Inställningar >Projektinställningar. Om du till exempel bara lagrar text på engelska kan du använda datatypen varchar i stället för nvarchar.

Konvertera objekt

SSMA konverterar Access-objekt till SQL Server-objekt, men objekten kopieras inte direkt. SSMA tillhandahåller en lista över följande objekt som ska migreras så att du kan bestämma om du vill flytta dem till SQL Server-databasen:

  • Tabeller och kolumner

  • Välj Frågor utan parametrar.

  • Primärnycklar och externa nycklar

  • Index och standardvärden

  • Kontrollera villkor (tillåt kolumnegenskap med längden noll, kolumnverifieringsuttryck, tabellverifiering)

Det är alltid bra att använda SSMA-utvärderingsrapporten som visar konverteringsresultaten, inklusive fel, varningar, informationsmeddelanden, tidsberäkningar för att utföra migreringen och åtgärder för enskilda felkorrigeringar som ska vidtas innan du flyttar objekten.

När du konverterar databasobjekt används objektdefinitioner från Access-metadata, de konverteras till motsvarande Transact-SQL-syntax (T-SQL)och informationen läses sedan in i projektet. Du kan sedan visa SQL Server- eller SQL Azure-objekt och deras egenskaper med hjälp av SQL Server eller SQL Azure Metadata Explorer.

Följ den här guiden om du vill konvertera, läsa in och migrera objekt tillSQL Server.

Tips    När du har migrerat Access-databasen sparar du projektfilen för senare användning, så att du kan migrera dina data igen för testning eller slutgiltig migrering.

Länka tabeller

Överväg att installera den senaste versionen av SQL Server OLE DB- och ODBC-drivrutiner i stället för att använda de inbyggda SQL Server-drivrutinerna som levereras med Windows. De nyare drivrutinerna är inte bara snabbare, utan de har stöd för nya funktioner i Azure SQL som de tidigare drivrutinerna inte har. Du kan installera drivrutinerna på varje dator där den konverterade databasen används. Mer information finns i Microsoft OLE DB Driver 18 för SQL Server och Microsoft ODBC Driver 17 för SQL Server.

När du har migrerat Access-tabellerna kan du länka till tabellerna i SQL Server som nu är värd för dina data. Genom att länka direkt från Access får du också ett enklare sätt att visa data i stället för att använda mer komplexa SQL Server-hanteringsverktyg.  Du kan köra frågor och redigera länkade data beroende på vilka behörigheter som konfigureras av SQL Server-databasadministratören.

Obs!    Om du skapar en ODBC DSN när du länkar till SQL Server-databasen under länkningsprocessen skapar du antingen samma DSN på alla datorer som använder det nya programmet eller programmässigt använder anslutningssträngen som lagras i DSN-filen.

Mer information finns i Länka till eller importera data från en Azure SQL Server-databas och importera eller länka till data i en SQL Server-databas.

Tips   Glöm inte att använda Länkhanteraren i Access för att enkelt uppdatera och länka om tabeller. Mer information finns i Hantera länkade tabeller.

Testa och ändra

I följande avsnitt beskrivs vanliga problem som du kan stöta på under migreringen och hur du hanterar dem.

Frågor

Endast urvalsfrågor konverteras. andra frågor inte, inklusive urvalsfrågor som tar parametrar. Vissa frågor kanske inte konverteras helt och SSMA rapporterar frågefel under konverteringen. Du kan manuellt redigera objekt som inte konverteras med hjälp av T-SQL-syntax. Syntaxfel kan också kräva att Access-specifika funktioner och datatyper manuellt konverteras till SQL Server-funktioner. Mer information finns i Jämförelse av SQL i Access med T-SQL för SQL Server.

Datatyper

Access och SQL Server har liknande datatyper, men tänk på följande möjliga problem.

Stort tal    Datatypen Stort tal lagrar ett icke-monetärt, numeriskt värde och är kompatibelt med datatypen SQL bigint. Du kan använda den här datatypen för att effektivt beräkna stora tal, men det kräver att du använder Access 16 -databasfilformatet (16.0.7812 eller senare) och fungerar bättre med 64-bitarsversionen av Access. Mer information finns i Använda datatypen Stort tal och välja mellan 64- och 32-bitarsversionen av Office.

Ja/Nej    Som standard konverteras en Ja/Nej-kolumn i Access till ett SQL Server-bitarsfält. För att undvika postlåsning kontrollerar du att bitfältet är inställt på att inte tillåta NULL-värden. I SSMA kan du markera bitkolumnen och sätta egenskapen Tillåt null till NO. Använd uttrycken CREATE TABLE eller ALTER TABLE i TSQL.

Datum och tid    Det finns flera överväganden för datum och tid:

  • Om kompatibilitetsnivån för databasen är 130 (SQL Server 2016) eller högre, och en länkad tabell innehåller en eller flera datetime eller datetime2-kolumner, kan tabellen returnera meddelandet #deleted i resultatet. Mer information finns i Access-länkad tabell till SQL-Server returnerar #deleted.

  • Använd datatypen Datum/tid i Access för att mappa till datatypen datetime. Använd den utökade datatypen Datum/tid i Access för att mappa till datatypen datetime2 som har ett större datum- och tidsintervall. Mer information finns i Använda den utökade datatypen Datum och tid.

  • Ta hänsyn till tid och datum när du frågar efter datum i SQL Server. Till exempel:

    • DateOrdered Between 1/1/19 and 1/31/19 may not include all orders.

    • DateOrdered Between 1/1/19 00:00:00 AM And 1/31/19 11:59:59 PM does include all orders.

Bifogad fil   Datatypen Bifogad fil lagrar en fil i Access-databas. I SQL Server har du flera alternativ att tänka på. Du kan extrahera filerna från Access-databasen och sedan överväga att lagra länkar till filerna i SQL Server-databasen. Du kan också använda FILESTREAM, FileTables eller Remote BLOB Store (RBS) för att lagra bifogade filer i SQL Server-databasen.

Hyperlänk    Access-tabeller har hyperlänkkolumner som SQL Server inte stöder. Som standard konverteras kolumnerna till nvarchar(max) kolumner i SQL Server, men du kan anpassa mappningen för att välja en mindre datatyp. I Access-lösningen kan du fortfarande använda hyperlänkbeteendet i formulär och rapporter om du ställer in egenskapen Hyperlänk för kontrollen på sant.

Flervärdesfält    Access-flervärdesfältet konverteras till SQL Server som ett ntext-fält som innehåller den avgränsade uppsättningen värden. Eftersom SQL Server inte har stöd för en flervärdesdatatyp som motsvarar en många-till-många-relation krävs det kanske ytterligare design- och konverteringsarbete.

Mer information om mappning av datatyper i Access och SQL Server finns i Jämför datatyper.

Obs!    Flervärdesfält konverteras inte och har utgått i Access 2010.

Mer information finns i datum- och tidstyper,sträng- och binära typeroch numeriska typer.

Visual Basic

Även om VBA inte stöds av SQL Server bör du observera följande möjliga problem:

VBA-funktioner i frågor    Access-frågor har stöd för VBA-funktioner på data i en frågekolumn. Men Access-frågor som använder VBA-funktioner kan inte köras på SQL Server, så alla data som begärs skickas till Microsoft Access för bearbetning. I de flesta fall bör dessa frågor konverteras till direktfrågor.

Användardefinierade funktioner i frågor    Microsoft Access-frågor stöder användning av funktioner som definierats i VBA-moduler för att bearbeta data som skickas till dem. Frågor kan vara fristående frågor, SQL-uttryck i formulär-/rapportpostkällor, datakällor för kombinationsrutor och listrutor i formulär, rapporter och tabellfält samt standarduttryck eller verifieringsuttryck. SQL Server kan inte köra de här användardefinierade funktionerna. Du kan behöva omarbeta de här funktionerna manuellt och konvertera dem till lagrade procedurer i SQL Server.

Optimera prestanda

Det viktigaste sättet att optimera prestanda med din nya, serverslutna SQL Server är att avgöra när lokala frågor eller fjärrfrågor ska användas. När du migrerar data till SQL Server flyttar du också från en filserver till en klientserverdatabasmodell för datoranvändning. Följ dessa allmänna riktlinjer:

  • Kör små skrivskyddade frågor på klienten för snabb åtkomst.

  • Kör långa läs-/skrivfrågor på servern för att dra nytta av den större processorkraften.

  • Minimera nätverkstrafiken med filter och aggregering för att endast överföra de data du behöver.

Optimera prestanda i klientserverdatabasmodellen

Mer information finns i Skapa en direktfråga.

Följande är ytterligare rekommenderade riktlinjer.

Placera logik på servern     Programmet kan också använda vyer, användardefinierade funktioner, lagrade procedurer, beräknade fält och utlösare för att centralisera och dela programlogik, affärsregler och principer, komplexa frågor, dataverifiering och referensintegritetskod på servern i stället för på klienten. Du kan fråga dig själv, kan den här frågan eller uppgiften utföras på servern bättre och snabbare? Testa slutligen varje fråga för att få optimala prestanda.

Använda vyer i formulär och rapporter    Gör följande i Access:

  • För formulär använder du en SQL-vy för ett skrivskyddat formulär och en SQL-indexerad vy för ett läs-/skrivformulär som datakälla.

  • För rapporter använder du en SQL-vy som datakälla. Skapa dock en separat vy för varje rapport, så att du enklare kan uppdatera en viss rapport utan att påverka andra rapporter.

Minimera inläsning av data i ett formulär eller en rapport    Visa inga data förrän användaren ber om dem. Låt till exempel egenskapen datakälla vara tom, låt användarna välja ett filter i formuläret och sedan fylla i egenskapen datakälla med filtret. Du kan också använda where-satsen för DoCmd.OpenForm och DoCmd.OpenReport för att visa exakt de poster som användaren behöver. Överväg att stänga av postnavigering.

Var försiktig med heterogena frågor   Undvik att köra en fråga som kombinerar en lokal Access-tabell och sql Server-länkad tabell, som ibland kallas för en hybridfråga. Den här typen av fråga kräver fortfarande att Access hämtar alla SQL Server-data till den lokala datorn och sedan kör frågan körs inte frågan i SQL Server.

När lokala tabeller ska användas    Överväg att använda lokala tabeller för data som sällan ändras, till exempel en lista över delstater eller delstater i ett land eller en region. Statiska tabeller används ofta för filtrering och kan fungera bättre på Access frontend.

Mer information finns i rådgivaren för databasmotorjustering,använda Analysera prestanda för att optimera en Access-databasoch optimera Microsoft Office Access-programlänkade till SQL Server.

Se även

Migreringsguide för Azure-http://datamigration.microsoft.com/

Microsoft Data Migration Blog

Migrering, konvertering ochhttps://www.fmsinc.com/consulting/sqlserverupsizing.aspx

Så här kan du dela med dig av en Access-skrivbordsdatabas

Behöver du mer hjälp?

Utöka dina Office-kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×