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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Esportazione dati da tabella di MSSQL SERVER 7
sabato 01 marzo 2008 - 20.52
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
dannycrane
Profilo
| Newbie
6
messaggi | Data Invio:
sab 1 mar 2008 - 20:52
Ciao a tutti,
ho il seguente problema. Ho creato una tabella di transito sulla quale vengono memorizzate, tramite un trigger su un'altra tabella, delle variazioni intercorse su giacenze di alcuni articoli.
Vorrei creare un dts che ad intervalli regolari prelevi i record dalla tabella di transito, li esporti in un file di testo e ad esportazione conclusa con successo, li cancelli per fare in modo che la tabella si ripopoli.
Mi chiedevo se durante l'esecuzione del dts la tabella di transito viene chiusa automaticamente all'inserimento di nuovi record o no. Nel primo caso infatti per la cancellazione finale dei record esportati è sufficiente un comando del, mentre nel secondo dovrei in qualche modo tener traccia dei record prelevati per poter successivamente eseguire la sola cancellazione di questi.
Qualcuno ha qualche suggerimento per il mio problema?
Grazie a chiunque leggerà il post.
Simone
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 3 mar 2008 - 10:50
>Mi chiedevo se durante l'esecuzione del dts la tabella di transito
>viene chiusa automaticamente all'inserimento di nuovi record
>o no.
Ciao Simone,
Cosa intendi con chiusa?!
>Nel primo caso infatti per la cancellazione finale dei
>record esportati è sufficiente un comando del, mentre nel secondo
>dovrei in qualche modo tener traccia dei record prelevati per
>poter successivamente eseguire la sola cancellazione di questi.
>Qualcuno ha qualche suggerimento per il mio problema?
Ad essere sincero io non l'ho capito
Comunque, se l'esigenza è quella di eliminare le righe esportate, io procederei in questo modo:
1) Se non esiste già, io prevederei una colonna datetime nella tabella popolata dal trigger valorizzata di default a GETDATE(), in modo da tenere traccia della data e ora di inserimento della riga;
2) Nel DTS andrei a considerare la data di sistema memorizzandola in una global variable. Nello step di esportazione andrei ad esportare tutte le righe < di tale data, mentre in quello di cancellazione provvederei ad eliminare tutte le righe < della solita data.
Eventuali righe inserite dal trigger durante l'esecuzione del DTS verranno esportate all'esecuzione successiva.
>Grazie a chiunque leggerà il post.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
dannycrane
Profilo
| Newbie
6
messaggi | Data Invio:
lun 3 mar 2008 - 11:34
Ciao Lorenzo,
grazie per la tua risposta. Posto che comunque mi hai dato già degli spunti molto interessanti, volevo solo chiarire la mia frase:
>Mi chiedevo se durante l'esecuzione del dts la tabella di transito
>viene chiusa automaticamente all'inserimento di nuovi record
>o no.
Intendevo se alla tabella transito fosse, durante l'esecuzione del dts, applicato un qualche sistema di lock che impedisse l'inserimento di ulterirori record. In questo modo, ad esportazione avvenuta, sarebbe stato possibile cancellare tutti i record della tabella di transito come dire "a cuor leggero".
Grazie alla tua risposta credo di aver risolto.
Ciao e a buon rendere.
Simone
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 3 mar 2008 - 12:44
>Intendevo se alla tabella transito fosse, durante l'esecuzione
>del dts, applicato un qualche sistema di lock che impedisse l'inserimento
>di ulterirori record.
Di default vengono attribuiti degli shared locks in lettura solo sulle pagine coinvolte dalla query di esportazione.
>In questo modo, ad esportazione avvenuta,
>sarebbe stato possibile cancellare tutti i record della tabella
>di transito come dire "a cuor leggero".
Eh no, e non avrebbe nemmeno senso fare una escalation a livello di tabella, dato che il trigger andrebbe inutilmente in blocking per tutta la durata del dts, causando dei SERI problemi di scalabilità.
>Grazie alla tua risposta credo di aver risolto.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !