Importera data till en Microsoft Access- databas med hjälp av lagrade procedurer är ett ofta förbisett ämne . Medan många resurser finns för att importera data från en Access- databas till en Microsoft SQL Server -databas , flytta data åt andra hållet är inte lika vanligt . I huvudsak en " länkad server "kommer att fordonet i valet för att importera data till Access-databasen. Sedan kan en lagrad procedur lätt utföra import och export fritt mellan SQL Server-databasen och Access -databasen
Du behöver :
Microsoft Access -databas .
Microsoft SQL Server 2000 eller senare .
Microsoft Jet-databasmotorn drivrutin ( vanligtvis installeras på de flesta Windows -datorer ) .
konfigurera och testa den länkad server
1 .
Anslut till SQL Server och Skapa en ny länkad server . Detta kan göras med hjälp av följande SQL- skript , som kommer att skapa en ny gillade server som heter " AccessDB . " ( Värdet efter @ datasrc är sökvägen till Access-databasen på den dator som kör SQL Server . )
EXEC sp_addlinkedserver
@ server=' AccessDB " ,
@ leverantör=' Microsoft . Jet. OLEDB. 4. 0 " ,
@ srvproduct=' OLE DB Provider för Jet " ,
@ datasrc=' C : \ sökväg \ till \ Access \ Database. mdb "
GO
2 .
Testa länkad server genom att välja från en befintlig tabell i Access -databasen (detta är valfritt) . Till exempel, om det finns en tabell som kallas " Tabell1 " i Access-databasen , kommer följande SQL-skript väljer du alla data från den .
SELECT *
FRÅN OPENQUERY ( AccessDB , " SELECT * FRÅN Tabell1 " )
3 .
Om det behövs kan du ta bort den länkade servern med sp_dropserver förfarandet .
EXECUTE sp_dropserver " AccessDB '
Importera data till Access-databasen
1 .
att importera data till en befintlig tabell i Access databas måste INSERT OPENQUERY (. . . ) syntax användas . Till exempel , om SQL Server-tabell kallas SrvTable och Access-tabell kallas Tabell1 och båda tabellerna innehåller samma kolumner , kommer följande SQL-skriptet kopiera data från SQL Server-tabell i Access-tabell .
INSERT OPENQUERY ( AccessDB , " SELECT * FROM Tabell1 )
SELECT * FROM SrvTable
2 .
Om det behövs kan du även uppdatera befintliga data i Access- databasen från SQL Server med hjälp av UPDATE OPENQUERY syntax , se nedan .
UPDATE OPENQUERY ( AccessDB , " SELECT * FROM Tabell1 )
SET Kol1=' Testing . . . '
3 .
Du kan också radera data från Access-databasen med hjälp av DELETE OPENQUERY syntax . ( Notera flydde enkla apostrofer [ '' ] inuti OPENQUERY uttalande . )
RADERA OPENQUERY ( AccessDB , " SELECT * FROM Tabell1 WHERE Kol1='' Testing . . . ''')
4 .
Slutligen skapar en lagrad procedur som använder en kombination av OPENQUERY uttalanden för att utföra ditt importera data uppgift . Om du exempelvis vill kopiera alla poster från SrvTable till Tabell1 Access -databasen , sedan uppdatera Kol1 till " Testa . . . ", använda följande SQL-skriptet .
SKAPA FÖRFARANDE CopyToTable1 AS BEGIN
INSERT OPENQUERY ( AccessDB , " SELECT * FROM Tabell1 )
SELECT * FROM SrvTable
UPDATE OPENQUERY ( AccessDB , " SELECT * FROM Tabell1 )
SET Kol1=' Testing . . .
END
tips och varningar
länkade servrar kan också skapas inifrån en lagrad procedur så länge de har ett unikt namn Jet-databasmotorn drivrutin inte är konstruerade för hög-transaktion eller stora volymer genomströmning , så detta rekommenderas inte för situationer där prestanda är kritisk .