Du kan använda Access som ett klientprogram och sedan länka till tabeller på en serverserver, till exempel SQL Server. Som standard körs de flesta frågor lokalt i Access ACE-databasmotorn. I vissa fall kan Access köra en fråga på distans på SQL Server, beroende på SQL-syntaxen och andra faktorer. Mer information finns i "JET Database Engine Version 3.0: ODBC Connectivity" i rediscovered JET and ODBC white papers.
Men ofta vill du uttryckligen köra en fråga på en databasserver. Du gör detta för att förbättra prestanda: databasservrar har större processorkraft än en stationär dator och du kan returnera en mindre delmängd data över nätverksanslutningen. Om du vill köra en fråga på en databasserver använder du en direktfråga som är ett TSQL-uttryck (Transact SQL) som ansluter till SQL Server med hjälp av en ODBC-anslutningssträng. Du kan till exempel skicka ett SELECT-uttryck för att returnera data till ett datablad, formulär, en rapport eller en listkontroll, köra motsvarigheten till redigeringsfrågor (DML-uttryck), anropa lagrade procedurer och utföra administrativa uppgifter (DDL-uttryck (Data Definition Language).
Obs Resultatet av en direktfråga är skrivskyddad. Om du vill redigera data direkt i ett datablad eller formulär skapar du en länkad tabell till en indexerad vy. Mer information finns i Skapa indexerade vyer.
-
Ansluta till en serverdatabas.
Mer information om hur du länkar till SQL Server finns i Importera eller länka till data i en SQL Server-databas och Länka till eller importera data från en Azure SQL Server-databas.
-
Välj Skapa > Frågedesign.
-
Om det behövs stänger du dialogrutan Lägg till tabeller (Visa tabell i Access.
-
Välj Design >Direkt.
Frågerutnätet döljs i Access och SQL-vyn visas.
-
Om frågans egenskapssida inte visas trycker du på F4 för att visa den.
-
Klicka på egenskapsrutan ODBC Connect Str på egenskapssidan och gör sedan något av följande:
Så här skaffar du en anslutningssträng:
-
Högerklicka på en tabell som är länkad till önskad datakälla i navigeringsfönstret och välj Länkhanteraren.
-
Markera kryssrutan för datakällan i dialogrutan Länkhanteraren och välj sedan Redigera.
-
Kopiera texten i rutan Anslutningssträng i dialogrutan Redigera länk.
-
Välj Version .
-
Följ anvisningarna för att skapa en DSN-fil som innehåller information om anslutningssträngen. Detaljerade anvisningar finns i Importera eller länka till data i en SQL Server-databas och Länka till eller importera data från en Azure SQL Server-databas.
När du har skapat en DSN-filanslutning lagras ODBC-anslutningssträngen internt i Access-databasen. Här är ett trick för att få en kopia av strängen:
-
Leta reda på ett länkat tabellnamn i navigeringsfönstret med den ODBC-anslutning du vill använda.
-
Tryck på Ctrl+G. för att öppna direktfönstret för VBA.
-
Ange: följande kod:
?CurrentDb.TableDefs("<table name>").Connect
Men ersätt med <tabellnamn> namnet på den länkade tabellen från steg a.
-
Kopiera strängen som returneras till egenskapen ODBC Connect Str .
-
-
Ange frågan i SQL-vyn.
Obs! Det finns viktiga skillnader mellan Access SQL och SQL Server TSQL, särskilt med syntax, funktionsnamn och funktionsargument. Mer information finns i Jämförelse av SQL i Access med T-SQL för SQL Server.
Tips Skapa TSQL-frågan i SQL Server Management Studio först och kopiera och klistra sedan in SQL-filen i SQL-vyn. Det säkerställer att frågan har rätt syntax. Om du inte har tillgång till en SQL Server-databas kan du installera Microsoft SQL Server Express-utgåvan på skrivbordet som har stöd för upp till 10 GB och är ett kostnadsfritt och enklare sätt att gå igenom och kontrollera migreringen.
-
Överväg att ange ytterligare relaterade egenskaper:
-
Returnerar poster Vissa SQL-uttryck returnerar poster, till exempel SELECT, och andra inte, till exempel UPDATE. Om frågan returnerar poster anger du den här egenskapen till Ja. om frågan inte returnerar poster anger du den här egenskapen till Nej.
Obs Direktfrågor kan returnera flera resultatuppsättningar, men i ett datablad, formulär, en rapport eller en postuppsättningsvariabel används bara den första resultatuppsättningen. Om du vill hämta flera resultatuppsättningar använder du en tabellfråga som följande exempel visar:
SELECT <pass-through query name>.* INTO <local table name> FROM < pass-through query name >
Du måste använda asterisken (*) eftersom varje resultatuppsättning kan ha olika kolumner. Varje resultatuppsättning sparas i en separat tabell och tal läggs till i de lokala tabellnamnen. Om till exempel tre resultatuppsättningar returneras blir tabellnamnen: <lokalt tabellnamn>, <lokalt tabellnamn>1 <lokalt tabellnamn>2.
-
Loggmeddelanden Ange om meddelanden från SQL-databasen ska returneras i en Access-meddelandetabell. Tabellnamnet har format, användarnamn – nn, där användarnamn är inloggningsnamnet för den aktuella användaren och nn är ett nummer som börjar på 00.
-
ODBC Timeout Ange hur många sekunder som ska vänta innan ett time out-fel uppstår när en fråga körs. Standardvärdet är 60 sekunder. Det kan uppstå fördröjningar på grund av nätverkstrafik eller tung användning av databasservern.
-
Max antal poster Ange det maximala antalet poster som ska returneras. Du kanske har begränsade systemresurser eller så vill du testa resultaten med bara en liten mängd data.
-
-
När du har angett frågan väljer du Design > Kör. Frågan skickas till databasservern för bearbetning.