Esportazione dati da tabella di MSSQL SERVER 7

sabato 01 marzo 2008 - 20.52

dannycrane Profilo | Newbie

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

>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

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

>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
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