Importazione di dati in un database di Microsoft Access utilizzando le stored procedure è un argomento spesso trascurato. Mentre esistono molte risorse per importare dati da un database di Access in un database di Microsoft SQL Server, lo spostamento dei dati da altra parte non è così comune. Essenzialmente, un \"linked server\" sarà il veicolo della scelta per l'importazione di dati in database di Access. Quindi, una stored procedure può facilmente eseguire le importazioni e le esportazioni liberamente tra il database di SQL Server e il database di Access.
Istruzioni
Configurare e testare il Server collegato
1
Connettersi a SQL Server e creare un nuovo server collegato. Questo può essere fatto utilizzando il seguente script SQL, che creerà un nuovo server chiamato \"AccessDB.\, è piaciuto molto" (il valore dopo @datasrc è il percorso al database di Access nel computer che esegue SQL Server).
EXEC sp_addlinkedserver
@server = 'AccessDB',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'C:\Path\to\Access\Database.mdb'
VAI
2
Testare il server collegato selezionando da una tabella esistente nel database di Access (questo è facoltativo). Ad esempio, se c'è una tabella denominata \"Table1\" nel database di Access, lo script SQL seguente selezionerà tutti i dati da esso.
SELEZIONARE
DA OPENQUERY (AccessDB, ' SELECT FROM Table1')
3
Se necessario, è possibile rimuovere il server collegato utilizzando la procedura sp_dropserver.
EXECUTE sp_dropserver 'AccessDB'
Importazione di dati in Database di Access
4
Per importare dati in una tabella esistente nel database di Access, deve essere utilizzata la sintassi di inserire OPENQUERY(...). Ad esempio, se la tabella di SQL Server è denominata SrvTable e la tabella di accesso è denominata Table1 ed entrambe le tabelle contengono le stesse colonne, lo script SQL seguente copierà i dati dalla tabella di SQL Server nella tabella di Access.
INSERIRE OPENQUERY (AccessDB, 'SELECT FROM Table1')
SELEZIONARE da SrvTable
5
Se necessario, è anche possibile aggiornare i dati esistenti nel database di Access da SQL Server utilizzando la sintassi OPENQUERY aggiornare, come mostrato qui sotto.
AGGIORNAMENTO OPENQUERY (AccessDB, ' SELECT * FROM Table1')
SET Col1 = 'Test...'
6
È anche possibile eliminare i dati dal database di Access utilizzando la sintassi OPENQUERY Elimina. (Si noti l'escape apici [' '] all'interno dell'istruzione OPENQUERY).
Elimina OPENQUERY (AccessDB, ' SELECT * FROM Table1 dove Col1 = 'Test... ' ')
7
Infine, creare una stored procedure che utilizza qualsiasi combinazione delle istruzioni OPENQUERY per completare l'attività di importazione di dati. Ad esempio, per copiare tutti i record dalla SrvTable Table1 del database di Access, quindi aggiornare Col1 a \"Testing...\", utilizzare il seguente script SQL.
CREARE PROCEDURE CopyToTable1 AS BEGIN
INSERIRE OPENQUERY (AccessDB, 'SELECT FROM Table1')
SELEZIONARE da SrvTable
AGGIORNAMENTO OPENQUERY (AccessDB, ' SELECT * FROM Table1')
SET Col1 = 'Test...'
FINE
Consigli & Avvertenze
- Server collegati possono anche essere creati da all'interno di una stored procedure, purché essi hanno un nome univoco
- Il driver di database Jet non è progettato per la velocità effettiva di transazione elevati o ad alto volume, quindi questo non è consigliato per situazioni dove le prestazioni sono critiche.