Insert da Access 2003 ad SQL 2000

martedì 17 giugno 2008 - 14.16

bluland Profilo | Guru

Salve,

Come da oggetto, vorrei trovare il modo migliore per fare tale operazione, descrivo lo scenario:

ho un db Sql server su server 1 ed un db access su server 2 tutti i giorni circa da access devono essere inviati circa
30000 record, ora la prima cosa che mi viene in mente e' quella di fornire al proprietario del db access una Stored procedure che fa l'insert e lui tramite
una connessione ODBC puo' crearsi magari un applicativo che prenda i dati di access e li inserisca in SQL srv, ma questo significa che dovrebbe
effettuare n volte una Insert (e non mi sembra molto performante),

accetto altre idee o suggerimenti..

Saluti
--------------------
Vincenzo PESANTE
System Engineer

lbenaglia Profilo | Guru

>ho un db Sql server su server 1 ed un db access su server 2 tutti
>i giorni circa da access devono essere inviati circa
>30000 record
1) i due DBMS sono interconnessi tra di loro oppure i due server non "si vedono"?

>ora la prima cosa che mi viene in mente e' quella
>di fornire al proprietario del db access una Stored procedure
>che fa l'insert e lui tramite
>una connessione ODBC puo' crearsi magari un applicativo che prenda
>i dati di access e li inserisca in SQL srv, ma questo significa
>che dovrebbe
>effettuare n volte una Insert (e non mi sembra molto performante),
2) Una stored procedure in Access? Si tratta di un .mdb o di un progetto adp?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

>>ho un db Sql server su server 1 ed un db access su server 2 tutti
>>i giorni circa da access devono essere inviati circa
>>30000 record
>1) i due DBMS sono interconnessi tra di loro oppure i due server
>non "si vedono"?
Sono sotto lo stesso dominio.
Anche se il server2 non e' altro che un pc client, cmq gli forniro' le credenziali per accedere al Server Sql

>
>>ora la prima cosa che mi viene in mente e' quella
>>di fornire al proprietario del db access una Stored procedure
>>che fa l'insert e lui tramite
>>una connessione ODBC puo' crearsi magari un applicativo che prenda
>>i dati di access e li inserisca in SQL srv, ma questo significa
>>che dovrebbe
>>effettuare n volte una Insert (e non mi sembra molto performante),
>2) Una stored procedure in Access? Si tratta di un .mdb o di
>un progetto adp?

si tratta di un .mdb, ma l'applicazione dovra' usufruire di una procedura residente sul Server Sql, quindi prendere i dati dal db Access locale e attraverso ODBC dovra effettuare l'insert con una SP segnalata da me.


>
Ciao
--------------------
Vincenzo PESANTE
System Engineer

bluland Profilo | Guru

Pensavo magari di utilizzare una procedura tipo

Insert into tableSQL
Select * from OpenRowset('''', ''Driver={(*mdb;)}; etc..

facendogli passare come parametro il path per trovare il db access.

e solo un idea!
--------------------
Vincenzo PESANTE
System Engineer

lbenaglia Profilo | Guru

>>1) i due DBMS sono interconnessi tra di loro oppure i due server
>>non "si vedono"?
>Sono sotto lo stesso dominio.
>Anche se il server2 non e' altro che un pc client, cmq gli forniro'
>le credenziali per accedere al Server Sql
Su questo PC risiede il file mdb?

>>2) Una stored procedure in Access? Si tratta di un .mdb o di
>>un progetto adp?
>
>si tratta di un .mdb, ma l'applicazione dovra' usufruire di una
>procedura residente sul Server Sql, quindi prendere i dati dal
>db Access locale e attraverso ODBC dovra effettuare l'insert
>con una SP segnalata da me.
Quindi è SQL Server che deve pescare i dati dal file .mdb e non viceversa come invece hai scritto nel primo post?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

>>>1) i due DBMS sono interconnessi tra di loro oppure i due server
>>>non "si vedono"?
>>Sono sotto lo stesso dominio.
>>Anche se il server2 non e' altro che un pc client, cmq gli forniro'
>>le credenziali per accedere al Server Sql
>Su questo PC risiede il file mdb?

esatto!
>
>>>2) Una stored procedure in Access? Si tratta di un .mdb o di
>>>un progetto adp?
>>
>>si tratta di un .mdb, ma l'applicazione dovra' usufruire di una
>>procedura residente sul Server Sql, quindi prendere i dati dal
>>db Access locale e attraverso ODBC dovra effettuare l'insert
>>con una SP segnalata da me.
>Quindi è SQL Server che deve pescare i dati dal file .mdb e non
>viceversa come invece hai scritto nel primo post?
Ops hai ragione cosi si capisce l'inverso!


--------------------
Vincenzo PESANTE
System Engineer

lbenaglia Profilo | Guru

>>Quindi è SQL Server che deve pescare i dati dal file .mdb e non
>>viceversa come invece hai scritto nel primo post?
>Ops hai ragione cosi si capisce l'inverso!
OK, ora ci siamo.
Dato che periodicamente SQL Server dovrà imporate dei dati dal file .mdb, ti suggerisco di creare una share nella directory che contiene il file .mdb e lato SQL Server definire un linked server che punti a tale file.
L'importazione potrai eseguirla tramite un job schedulato che esegua una query sul linked server.

Per tutti i dettagli consulta i Books Online.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

>>>Quindi è SQL Server che deve pescare i dati dal file .mdb e non
>>>viceversa come invece hai scritto nel primo post?
>>Ops hai ragione cosi si capisce l'inverso!
>OK, ora ci siamo.
>Dato che periodicamente SQL Server dovrà imporate dei dati dal
>file .mdb, ti suggerisco di creare una share nella directory
>che contiene il file .mdb e lato SQL Server definire un linked
>server che punti a tale file.
>L'importazione potrai eseguirla tramite un job schedulato che
>esegua una query sul linked server.

quindi al linked server dovrei dargli il path del pc dove esiste l'mdb,
per cui dovrà esistere una shared area su quel pc accessibile dal server sql.
poi il resto viene da se..
(potrei usare tranquillamente una select... into...)
che è molto piu performante di n insert via ODBC


grazie
Saluti
--------------------
Vincenzo PESANTE
System Engineer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5