November 12
Importazione di dati in un database Microsoft Access utilizzando stored procedure è un argomento spesso trascurato. Mentre molte risorse esistono per importare i dati da un database di Access in un database Microsoft SQL Server, lo spostamento di dati da un'altra parte non è così comune. In sostanza, un \ "server collegato \" sarà il veicolo di scelta per l'importazione dei dati nel database di Access. Poi, una stored procedure in grado di eseguire facilmente importazioni e le esportazioni liberamente tra il database SQL Server e il database di Access.
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 piaciuto chiamato \ "AccessDB. \" (Il valore dopo @datasrc è il percorso del database di Access sul computer che esegue SQL Server.)
sp_addlinkedserver EXEC
@server = 'AccessDB',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@ srvproduct = 'OLE DB per Jet',
@datasrc = 'C: \ percorso \ a \ Access \ Database.mdb'
ANDARE
2 Testare il server collegato selezionando da una tabella esistente nel database di Access (questo è opzionale). Ad esempio, se vi è una tabella chiamata \ "Table1 \" nel database di Access, il seguente script SQL selezionare 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.
ESEGUIRE sp_dropserver 'AccessDB'
4 Per importare i dati in una tabella esistente nel database di Access, la sintassi INSERT OPENQUERY (...) deve essere utilizzato. Ad esempio, se la tabella di SQL Server si chiama SrvTable e la tabella di Access si chiama Table1 e entrambe le tabelle contengono le stesse colonne, il seguente script SQL copia i dati dalla tabella di SQL Server nella tabella di Access.
INSERT OPENQUERY (AccessDB, 'SELECT
FROM Table1')
SELECT FROM SrvTable
5 Se necessario, è possibile anche aggiornare i dati esistenti nel database di Access dal SQL Server utilizzando la sintassi OPENQUERY UPDATE, come si vede qui sotto.
UPDATE OPENQUERY (AccessDB, 'SELECT * FROM Table1')
SET Col1 = 'Testing ...'
6 È inoltre possibile eliminare i dati dal database di Access utilizzando la sintassi OPENQUERY DELETE. (Notare le virgolette singole di escape [ ''] all'interno della dichiarazione OPENQUERY.)
DELETE OPENQUERY (AccessDB, 'SELECT * FROM Table1 WHERE Col1 =' 'Testing ...' '')
7 Infine, creare una stored procedure che utilizza una qualsiasi combinazione delle dichiarazioni OPENQUERY per compiere il proprio compito di importazione dei dati. Ad esempio, per copiare tutti i record dalla SrvTable a Table1 del database di Access, quindi aggiornare Col1 a \ "Testing ... \", utilizzare il seguente script SQL.
CREATE PROCEDURE CopyToTable1 AS BEGIN
INSERT OPENQUERY (AccessDB, 'SELECT FROM Table1')
SELECT FROM SrvTable
UPDATE OPENQUERY (AccessDB, 'SELECT * FROM Table1')
SET Col1 = 'Testing ...'
FINE