Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Import da Db Access a Sql Server
venerdì 14 gennaio 2011 - 12.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
erik77
Profilo
| Senior Member
217
messaggi | Data Invio:
ven 14 gen 2011 - 12:14
Ciao ragazzi,
avrei la necessità di effettuare un upload da una mia pagina aspx di un file access .mdb, vorrei effettuare l'import delle tabelle nel mio database sql server e inoltre salvare il file in una tabella con un campo "image".
Per effettuare questa "import" applicativa conoscete un modo veloce o dovrò ciclare per ogni record?
grazie
Ciao
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 14 gen 2011 - 12:23
>Ciao ragazzi,
Ciao
>avrei la necessità di effettuare un upload da una mia pagina
>aspx di un file access .mdb, vorrei effettuare l'import delle
>tabelle nel mio database sql server e inoltre salvare il file
>in una tabella con un campo "image".
a prescindere dal fatto che il tipo image è meglio non usarlo (perchè a breve sarà obsoleto: "ntext, text, and image data types will be removed in a future version of MicrosoftSQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead."), il database server è il tuo? Oppure sei su un hosting pubblico? Perchè se avessi in mano il server, con un ssis potresti cavartela con veramente poco..
>grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
erik77
Profilo
| Senior Member
217
messaggi | Data Invio:
ven 14 gen 2011 - 13:25
grazie per la celere risposta, si il db è sul nostro server, quindi potrei fare un upload del file mdb sul server e poi lanciare da asp.net una ssid che mi faccia l'import?
grazie di nuovo
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 14 gen 2011 - 13:32
>grazie per la celere risposta, si il db è sul nostro server,
>quindi potrei fare un upload del file mdb sul server e poi lanciare
>da asp.net una ssid che mi faccia l'import?
se l'upload deve essere fatto da client e quindi sono gli utenti che decidono, puoi fare una paginetta che te lo gestisca e ti porti il file mdb in una cartella che il dbserver può vedere, almeno in lettura.
Poi, sul db server, puoi fare un sql server integration service (ssis), che altro non è che un processo che prende l'access, lo screma, lo filtra, lo trasforma e poi lo carica su sql server.
Conosci integration service? Che versione ed edizione di sql server hai? Perchè ci sono limitazioni..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
erik77
Profilo
| Senior Member
217
messaggi | Data Invio:
ven 14 gen 2011 - 13:58
allora utilizziamo sql server 2005 , integration service lo conosco poco ma mi piacerebbe fare proprio qualcosa di simile, come potrei procedere? e comunque questa procedura db si può attivare dalla mia pagina aspx nel momento dell'upload?
grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 14 gen 2011 - 14:20
>allora utilizziamo sql server 2005 , integration service lo conosco
>poco ma mi piacerebbe fare proprio qualcosa di simile, come potrei procedere?
ti consiglio di prendere spunto per qualche operazione dal mio blog:
http://blogs.dotnethell.it/suxstellino/
>e comunque questa procedura db si può attivare dalla
>mia pagina aspx nel momento dell'upload?
diciamo che non è una buona prassi. Però puoi pensare di fare una tabellina o creare un file segnaposto che semplicemente funge da semaforo o comunque da "trigger".
Poi un job di sql server schedulato ogni minuto ad esempio, lancia il ssis il quale controlla se il semaforo è su "verde" per essere eseguito.
In questo modo hai fatto un poller sul server in asincrono senza appesantire la pagina web che segna solo l'esecuzione (o inserisce in una coda se devi gestire più di una esecuzione).
Alla fine il ssis segna quello che deve dove ti server, ed un'altra pagina web (o un controllo ajax) interroga il server per controllare quando l'operazione è terminata..
Questa è l'idea di massima..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
erik77
Profilo
| Senior Member
217
messaggi | Data Invio:
lun 17 gen 2011 - 09:22
grazie dell'idea , ma io vorrei fare qualcosa di sincrono quindi fare l'import direttamente dalla pagina aspx al click di un bottone, quindi vorrei creare una import applicativa che sia performante, avete qualche idea oltre quella di ciclare per ogni riga ?
grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 17 gen 2011 - 09:59
>grazie dell'idea , ma io vorrei fare qualcosa di sincrono quindi
>fare l'import direttamente dalla pagina aspx al click di un
>bottone, quindi vorrei creare una import applicativa che sia
>performante, avete qualche idea oltre quella di ciclare per ogni riga ?
Con ssis l'importazione è forse la più prestante che puoi trovare (insieme all'utilizzo della bcp utility).
Cosa intendi con "ciclare riga per riga"? Ciclare cosa?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
erik77
Profilo
| Senior Member
217
messaggi | Data Invio:
lun 17 gen 2011 - 12:31
se non dovessi utilizzare un SSID dovrei creare una import applicativa da tabella access a tabella sql servert, quindi immagino che dovrei fare un ciclo e per ogni riga letta da una tabella dovrei inserirla nell'altra tabella, senza usare un SSID vedi altre strade?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 17 gen 2011 - 12:56
>se non dovessi utilizzare un SSID dovrei creare una import applicativa
>da tabella access a tabella sql servert, quindi immagino che
>dovrei fare un ciclo e per ogni riga letta da una tabella dovrei
>inserirla nell'altra tabella, senza usare un SSID vedi altre
>strade?
SSIS = SQL Server Integration Serices
se non usi quello, puoi sì fare un programma che ti scorra il catalog di access ed effettui importazioni. Ma è un farsi del male inutilmente a mio avviso. Per questo tipo di operazioni di solito si usano strumenti di ETL (come appunto SSIS). Non l'ho mai fatto, ma potresti provare a fare letture dirette da sql server su un linked server access... Però senza ETL non saprei darti molti consigli..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
erik77
Profilo
| Senior Member
217
messaggi | Data Invio:
mar 18 gen 2011 - 11:30
ho risolto usando la classe SqlBulkCopy grazie dell'aiuto
Torna su
Stanze Forum
Elenco Threads
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 !