Migrera en Access-databas till SQL Server

Obs!: Vi vill kunna erbjuda dig bästa möjliga supportinnehåll så fort som möjligt och på ditt språk. Den här sidan har översatts med hjälp av automatiserad översättning och kan innehålla grammatiska fel eller andra felaktigheter. Vår avsikt är att den här informationen ska vara användbar för dig. Vill du berätta för oss om informationen är till hjälp längst ned på sidan? Här är artikeln på engelska som referens.

Vi har alla begränsningar och en Access-databas är inget undantag. En Access-databas har en storleksgräns på 2 GB och stöder inte fler än 255 samtidiga användare. Så när det är dags för databasen att gå till nästa nivå kan du migrera till SQL Server. SQL Server (om lokalt eller i Azure molnet) har stöd för större mängder data, fler samtidiga användare och har större kapacitet än databasmotorn JET/ACE. Den här guiden får du en mjuk start till SQL Server-resa, hjälper till att bevara Access frontend-lösningar som du har skapat och hopefully motivates du bör använda Access för framtida databaslösningar. Utvidgningsguiden har tagits bort från Access i Access 2013, så att du kan använda den Microsoft SQL Server migrering assistenten (SSMA). Följ dessa steg om du vill ska migreras.

Stadier i Databasmigrering till SQL Server

Innan du börjar

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

Om delade databaser

Alla Access-databasobjekt kan antingen vara i en databasfil eller de kan lagras i två databasfiler: en klientdatabas och en backend-databas. Det här kallas Dela databasen och är utformad för att underlätta delning i ett nätverk. Backend-databasfilen får bara innehålla tabeller och relationer. Filen frontend 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 flyttar en Access-databas måste liknar den en uppdelad databas i den SQL Server fungerar som en ny backend för de data som nu finns på en server.

Därför kan du fortfarande ha frontend Access-databasen med länkade tabeller till SQL Server-tabeller. Effektivt, kan du få fördelarna med snabbare utveckling av program som finns i en Access-databas, tillsammans med skalbarhet i SQL Server.

Fördelar med SQL Server

Vill du ha några övertygande att migrera till SQL Server? Här är några fler fördelar med att tänka på:

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

  • Ökad tillgänglighet    Med SQL Server kan du dynamiskt säkerhetskopiera, stegvis eller fullständig, databas när den är 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.

  • Bättre prestanda och skalbarhet    SQL Server-databas utför vanligtvis bättre än en Access-databas, särskilt om konversationen har en stor terabytestorlek databas. Dessutom bearbetar SQL Server frågor mycket snabbare och effektivare behandlar frågor parallellt, med flera inbyggda trådar inom en enskild process för att hantera användarbegäranden.

  • Förbättrad säkerhet    Med hjälp av en betrodd anslutning, integreras SQL Server med Windows systemsäkerhet och ge en enstaka integrerad åtkomst till nätverket och databasen med bäst av båda säkerhetssystem. Detta gör det mycket enklare att administrera komplexa säkerhet färgschema. SQL Server är idealisk lagring för känslig information, till exempel personnummer, kreditkortdata och adresser som är konfidentiellt.

  • Omedelbar återställning    Om operativsystemet kraschar eller kraftfulla går, återskapa SQL Server automatiskt databas till ett konsekvent tillstånd på några minuter och med administratörsåtgärder ingen databas.

  • Användningen av VPN    Access och virtuella privata nätverk (VPN) får inte. Men med SQL Server, externa användare kan använda fortfarande använda Access frontend-databasen på ett skrivbord och den SQL Server serverdel bakom brandväggen VPN.

Första stegen

Det finns några problem du kan lösa upp framför som hjälper dig att 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. SQL Server kräver alla tabeller som ska ha minst en index och kräver en länkad tabell ska ha en primärnyckel om tabellen kan uppdateras.

  • Kontrollera primär/sekundärnyckelrelationer    Kontrollera att relationerna är baserade på fälten konsekvent datatyper och storlekar. SQL Server stöder inte kopplade kolumner med olika datatyper och storlekar i begränsningar för främmande nycklar.

  • Ta bort kolumn för bifogade filer    SSMA migrera inte tabellerna som innehåller kolumnen bifogad fil.

Innan du kör SSMA gör du följande första sätt.

  1. Stäng Access-databasen.

  2. Kontrollera att aktuella användare som är anslutna till databasen även stänga databasen.

  3. Om databasen finns i mdb-filformat, Ta bort säkerhet på användarnivå.

  4. Säkerhetskopiera databasen. Mer information finns i skydda data med säkerhetskopiering och återställning.

Tips    Överväg att installera Microsoft SQL Server Express edition på skrivbordet som har stöd för upp till 10 GB och är ett kostnadsfritt och enklare sätt att köra via och kontrollera migreringen.

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

Köra SSMA

Microsoft tillhandahåller Microsoft SQL Server migrering assistenten (SSMA) för att underlätta migrering. SSMA migreras huvudsakligen tabeller och select-frågor utan parametrar. Formulär, rapporter, makron och VBA-moduler konverteras inte.

  1. Migrera en databas med hjälp av SSMA, första Hämta och installera programvaran genom att dubbelklicka på den hämta MSI-filen. Kontrollera att du installerar lämplig 32 eller 64-bitarsversion för din dator.

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

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

  3. Början att följa anvisningarna i SSMA innehåller grundläggande information, till exempel SQL Server-plats, Access-databas och objekt mot migrera 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 kan du lägga till en tidsstämpelkolumn genom att välja Granska verktyg > Projektinställningarna > Allmänt. Mer information finns i länkad tabell i Access till SQL Server-databas returnerar #deleted.

  5. Välj Granska verktyg > Projektinställningarna > Typ mappningom du vill ange exakta-datatyper som stöds. Om du lagrar endast engelsk text kan använda du datatypen varchar snarare än nvarchar .

SQL Server Metadata Explorer visas en Access-databasobjekt och SQL Server-objekt så att du kan granska det aktuella innehållet i båda databaserna. Dessa två anslutningar sparas i migreringsfilen bör du bestämmer dig för att överföra ytterligare objekt i framtiden.

Obs!    Migreringsprocessen kan ta ett tag beroende på storleken på din databasobjekt samt mängden data som ska överföras.

Konvertera objekt

SSMA konverterar Access-objekt till SQL Server-objekt, men det Kopiera inte objekten direkt. SSMA innehåller en lista med följande objekt att migrera så att du kan bestämma om du vill flytta dem till SQL Server-databas:

  • Tabeller och kolumner

  • Urvalsfrågor utan parametrar.

  • Primära och sekundärnycklar

  • Index och standardvärden

  • Kontrollera giltiga (Tillåt noll längd kolumnegenskap, verifieringsuttryck för kolumn, tabell verifiering)

Som du bör använda SSMA assessment rapport som visar konverteringen resultat, inklusive fel, varningar, information meddelanden, tid, uppskattningar för att utföra migreringen och enskilda fel korrigering stegen innan du flytta den objekt.

Konverterar databasobjekt tar objektdefinitioner från Access-metadata, konverterar dem till motsvarande Transact-SQL (T-SQL) syntaxenoch läser in den här informationen i projektet. Du kan då se SQL Server eller SQL Azure-objekt och deras egenskaper med hjälp av SQL Server eller SQL Azure Metadata Explorer.

Om du vill konvertera, läses in och migrera objekt till SQL Server kan använda den här guiden.

Tips    När du har migrerats din Access-databas, spara project-fil för senare användning, så att du kan migrera dina data igen för att testa eller slutliga migrering.

Länka tabeller

Överväg att installera den senaste versionen av SQL Server OLE DB och ODBC-drivrutiner istället för att använda de interna SQL Server-drivrutiner som levereras med Windows. Inte bara är nyare drivrutiner snabbare, men de nya funktioner i SQL Azure som de föregående drivrutinerna inte. Du kan installera drivrutiner på alla datorer där den konverterade databasen används. Mer information finns i Microsoft OLE DB drivrutin 18 för SQL Server och Microsoft ODBC-drivrutin 17 för SQL Server.

När du har migrerat Access-tabeller, kan du länka till tabeller i SQL Server som nu är värd för dina data. Länka direkt från Access också ger dig ett enklare sätt att visa dina data i stället för mer komplexa SQL Server-hanteringsverktyg.  Du kan skapa en fråga och redigera länkade data beroende på behörigheter som bokats av databasadministratören SQL Server.

Obs!    Om du har skapat en ODBC DSN när du länkar till SQL Server-databas under länkningen kan du skapa samma DSN på alla datorer som använder det nya programmet.

Mer information finns i länka till eller importera data från 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 revidera

I följande avsnitt beskrivs vanliga problem som kan uppstå under migrering och hur du hanterar dem.

Frågor

Endast urvalsfrågor konverteras; andra frågor är inte, inklusive urvalsfrågor som hämtar parametrar. Några frågor kanske inte helt konverteras och SSMA rapporter fråga fel under konverteringen. Du kan manuellt redigera objekt som inte konverterar genom att använda T-SQL-syntax. Syntaxfel kräva också manuell konvertering av Access-specifika funktioner och datatyper till SQL Server de. Gemensamma SQL-syntax skillnader är:

  • Tecknet asterisk (*) används som ett jokertecken, medan T-SQL använder procent (%).

  • Access använder citattecken runt tabellnamn och objekt. T-SQL kan använda dem för tabellnamn med blanksteg, men det här är inte standard namnger övning. Objektnamn ska ändras till utan blanksteg i de flesta fall, men frågor måste också skrivas så att det speglar nytt tabellnamn. Använda hakparenteser [] för tabeller som inte kan ändras, men som inte överensstämmer med namnger standarder.

  • Extra parenteser runt parametrar läggs till i frågor som kan tas bort.

  • SQL Server hanterar NULL-värden och strängsammanfogning annorlunda. Testa frågor så att rätt värden returneras.

  • För villkorssatser använder Access OOM medan T-SQL används ofta SKIFTLÄGE, även om SQLServer 2012 och senare stöder OOM.

  • Flera funktioner och datatyper som används på olika sätt i Access och T-SQL. SSMA bör konvertera dessa åt dig, men du kan behöva göra ytterligare manuella ändringar.

Datatyper

Access och SQL Server har liknande-datatyper som stöds, men tänk på följande potentiella problem.

Innehåller många-datatyp    Datatypen innehåller många lagrar ett icke-monetära, ett numeriskt värde och är kompatibelt med datatypen SQL bigint. Du kan använda den här typen av för att effektivt beräkna stora tal men krävs med hjälp av Access-16 (16.0.7812 eller senare) accdb Webbdatabas filformat och utför bättre med 64-bitarsversionen av Access. Mer information finns i använda datatypen innehåller många och Välj mellan 64-bitars eller 32-bitars version av Office.

Bifogad fil   Typen av bifogad fil sparar en fil i Access-databas. I SQL Server kan välja du flera att göra. Du kan extrahera filerna från Access-databasen och bör du lagra länkar till filer i SQL Server-databas. Alternativt kan du använda FILESTREAM eller FileTables för att behålla bifogade filer lagras i SQL Server-databas.

Hyperlänk    Access-tabeller har hyperlänk kolumner som inte stöds av SQL Server. Dessa kolumner konverteras till nvarchar(max) kolumner i SQL Server som standard, men du kan anpassa mappning om du vill välja en mindre datatyp. I din Access-lösning kan du fortfarande använda beteendet hyperlänk i formulär och rapporter om du har angett egenskapen hyperlänk för kontrollen till true.

Flervärdesfält    Access flervärdesfält konverteras till SQL Server som ett ntext-fält som innehåller en avgränsad uppsättning värden. Eftersom SQL Server inte har stöd för ett uppslagsfält med flera datatyp som modeller en n: n-relation behövas ytterligare design och konvertering arbete.

Mer information om mappning Access och SQL Server-datatyper finns i jämföra-datatyper som stöds.

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

Visual Basic

Även om VBA inte stöds av SQL Server, Tänk på följande möjligt:

VBA-funktioner i frågor    Access-frågor stöder 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å att alla begärda data skickas till Microsoft Access för bearbetning. I de flesta fall konverteras dessa frågor till remote frågor ( vidarekoppling frågor, lagrade procedurer eller vyer) som körs i SQL Server för bästa möjliga prestanda.

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

Optimera prestanda

Det viktigaste sättet att optimera prestandan med din nya, backend-SQL Server är det allra att avgöra när du ska använda lokalt eller frågor. När du flyttar dina data till SQL Server måste flyttar du också från en filserver till en klient-server databasmodell för datorer. Följ dessa riktlinjer:

  • Kör small, skrivskyddade frågor på klienten för snabbaste åtkomst.

  • Köra lång, skrivskyddad frågor på servern för att dra nytta av större processorkraft.

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

Optimera prestandan i klienten server databasmodell

Ditt program kan också använda användardefinierade funktioner, lagrade procedurer och utlösare att samla och dela programlogik, regler och principer, komplexa frågor, dataverifiering och referensintegritetskod på servern i stället för på den klient.

Undvik att använda en fråga som kombinerar lokala Access-tabell och SQL Server-tabell, som också kallas en hybrid-fråga. Den här typen av frågor kräver fortfarande tillgång till Hämta SQL Server-data till den lokala datorn och kör sedan frågan, det går inte att köra frågan i SQL Server.

Öppna inte en formulär-postuppsättning baserat på en stor tabell och stänger av Posthantering.

Slutligen Testa varje fråga för att uppnå optimala prestanda.

Mer information finns i Finjustera klassificering av databasmotorn, Använd Analysera prestanda för att optimera en Access-databasoch Optimera Microsoft Office Access program länkas till SQL Server.

Mer information finns i

Migreringsguide för Azure-databas

Microsoft Data migrering blogg

Microsoft Access till SQL Server-migrering, konvertering och utvidga

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

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.

×