Dela via


Länka Access-applikationer till SQL Server – Azure SQL Database (AccessToSQL)

Om du vill använda dina befintliga Access-program med SQL Server kan du länka dina ursprungliga Access-tabeller till de migrerade SQL Server- eller SQL Azure-tabellerna. Länkning ändrar din Access-databas så att dina frågor, formulär, rapporter och dataåtkomstsidor använder data i SQL Server eller Azure SQL Database i stället för data i din Access-databas.

Obs

Dina Access-tabeller finns kvar i Access, men uppdateras inte tillsammans med SQL Server- eller SQL Azure-uppdateringar. När du har länkat tabellerna och verifierat funktionen kanske du vill ta bort dina Access-tabeller.

Länka Access- och SQL Server-tabeller

När du länkar en Access-tabell till en SQL Server- eller SQL Azure-tabell lagrar Jet-databasmotorn anslutningsinformation och tabellmetadata, men data lagras i SQL Server eller SQL Azure. Med den här länken kan dina Access-program fungera mot Access-tabellerna även om de faktiska tabellerna och data finns i SQL Server eller SQL Azure.

Anteckning

Om du använder SQL Server-autentisering lagras lösenordet i klartext i de länkade Access-tabellerna. Vi rekommenderar att du använder Windows-autentisering.

Så här länkar du tabeller

  1. I Access Metadata Explorer väljer du de tabeller som du vill länka.

  2. Högerklicka på Tabelleroch välj sedan Länk.

SQL Server Migration Assistant (SSMA) for Access säkerhetskopierar den ursprungliga Access-tabellen och skapar en länkad tabell.

När du har länkat tabellerna visas tabellerna i SSMA med en liten länkikon. I Access visas tabellerna med en "länkad" ikon, som är en jordglob med en pil som pekar på den.

När du öppnar en tabell i Access hämtas data med hjälp av en keysetmarkör. Därför hämtas inte alla data samtidigt för stora tabeller. Men när du bläddrar i tabellen hämtar Access ytterligare data efter behov.

Viktig

Om du vill länka åtkomsttabeller med en Azure-databas behöver du SQL Server Native Client (SNAC) version 10.5 eller senare.
Du kan hämta den senaste versionen av SNAC från Microsoft SQL Server 2008 R2 Feature Pack.

Ta bort länkning till Access-tabeller

När du avlänkar en Access-tabell från en SQL Server- eller SQL Azure-tabell återställer SSMA den ursprungliga Access-tabellen och dess data.

Så här avlänkar du tabeller

  1. I Access Metadata Explorer väljer du de tabeller som du vill ta bort länken till.

  2. Högerklicka på Tabelleroch välj sedan Ta bort länk.

Länka tabeller till en annan server

Om du har länkat Access-tabellerna till en SQL Server-instans och senare vill ändra länkarna till en annan instans måste du länka om tabellerna.

Så här länkar du tabeller till en annan server

  1. I Access Metadata Explorer väljer du de tabeller som du vill ta bort länken till.

  2. Högerklicka på Tabeller och välj sedan Ta bort länk.

  3. Klicka på knappen Återanslut till SQL Server.

  4. Anslut till den instans av SQL Server eller SQL Azure som du vill länka Access-tabellerna till.

  5. I Access Metadata Explorer väljer du de tabeller som du vill länka.

  6. Högerklicka på Tabelleroch välj sedan Länk.

Uppdatera länkade tabeller

Om SQL Server- eller SQL Azure-tabelldefinitionerna ändras kan du ta bort länken och sedan länka om tabellerna i SSMA med hjälp av de procedurer som visades tidigare i det här avsnittet. Du kan också uppdatera tabellerna med hjälp av Access.

Uppdatera länkade tabeller med hjälp av Access

  1. Öppna Access-databasen.

  2. I listan objekt klickar du på Tabeller.

  3. Högerklicka på en länkad tabell och välj sedan Länkad tabellhanterare.

  4. Markera kryssrutan bredvid varje länkad tabell som du vill uppdatera och klicka sedan på OK.

Möjliga problem efter migreringen

I följande avsnitt visas problem som kan uppstå i befintliga Access-program när du har migrerat databaser från Access till SQL Server eller SQL Azure och länkar sedan tabellerna, tillsammans med orsakerna och lösningarna.

Långsamma prestanda med länkade tabeller

Orsak: Vissa frågor kan vara långsamma efter uppskalning av följande skäl:

  • Programmet är beroende av funktioner som inte finns i SQL Server eller SQL Azure, vilket gör att Jet hämtar tabeller lokalt för att köra en SELECT-fråga.

  • Frågor som uppdaterar eller tar bort många rader skickas av Jet som en parameteriserad fråga för varje rad.

Lösning: Konvertera långsamma frågor till direktfrågor, lagrade procedurer eller vyer. Konvertering till direktfrågor har följande problem:

  • Det går inte att ändra direktfrågor. För att ändra frågeresultatet eller lägga till nya poster måste du göra det på ett annat sätt, till exempel genom att ha tydliga Ändra- eller Lägg till-knappar i formuläret som är kopplat till frågan.

  • Vissa frågor kräver användarindata, men direktfrågor stöder inte användarindata. Användarindata kan hämtas med VBA-kod (Visual Basic for Applications) som frågar efter parametrar, eller av ett formulär som används som indatakontroll. I båda fallen skickar VBA-koden frågan med användarens indata till servern.

Kolumner med automatisk inkrement uppdateras inte förrän posten har uppdaterats

Orsak: När du har anropat RecordSet.AddNew i Jet är autoincrement-kolumnen tillgänglig innan posten uppdateras. Detta gäller inte i SQL Server eller SQL Azure. Det nya värdet i identitetskolumnen är endast tillgängligt efter att den nya posten har sparats.

Resolution: Kör följande VBA-kod (Visual Basic for Applications) innan du öppnar identitetsfältet:

Recordset.Update  
Recordset.Move 0,  
Recordset.LastModified  

Nya poster finns inte tillgängliga

Orsak: När du lägger till en post i en SQL Server- eller SQL Azure-tabell med hjälp av VBA, om tabellens unika indexfält har ett standardvärde och du inte tilldelar ett värde till det fältet, visas inte den nya posten förrän du öppnar tabellen i SQL Server eller SQL Azure igen. Om du försöker hämta ett värde från den nya posten får du följande felmeddelande:

Run-time error '3167' Record is deleted.

Lösning: När du öppnar SQL Server- eller SQL Azure-tabellen med hjälp av VBA-kod tar du med alternativet dbSeeChanges, som i följande exempel:

Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)

Efter migreringen tillåter vissa frågor inte att användaren lägger till en ny post

Orsak: Om en fråga inte innehåller alla kolumner som ingår i ett unikt index kan du inte lägga till nya värden med hjälp av frågan.

Lösning: Kontrollera att alla kolumner som ingår i minst ett unikt index är en del av frågan.

Du kan inte ändra ett länkat tabellschema med Access

Orsak: När du har migrerat data och länkat tabeller kan användaren inte ändra schemat för en tabell i Access.

Lösning: Ändra tabellschemat med hjälp av SQL Server Management Studio och uppdatera sedan länken i Access.

Orsak: När du har migrerat data förlorar hyperlänkar i kolumner sina funktioner och blir enkla nvarchar(max) kolumner.

Lösning: Ingen.

Vissa SQL Server-datatyper stöds inte av Access

Orsak: Om du senare uppdaterar dina SQL Server- eller SQL Azure-tabeller så att de innehåller datatyper som inte stöds av Access kan du inte öppna tabellen i Access.

Lösning: Du kan definiera en Åtkomstfråga som endast returnerar dessa rader med datatyper som stöds.

Se även

Migrera åtkomstdatabaser till SQL Server