Newsgroup: it.comp.software.database
Titolo: [SQLSERVER] Transazione in DTS

Ho un DTS che importa dei dati da un server Oracle.
In pratica fa prima una TRUNCATE sulla tabella di destinazione e poi sull'ON
SUCCESS importa i dati con un TRASFORM DATA. Può però capitare che vi sia un
problema durante l'importazione dei dati, visto che i server sono in città
diverse.
C'è un modo per far si che se l'importazione va male ritorni tutto al
momento precedente la TRUNCATE (in modo da non lasciare la tabella vuota
come capita attualmente).
Grazie.

 momento precedente la TRUNCATE
sulle proprietà del DB ricordo un'opzione legata proprio al livello di
log; ritengo tu abbia "bulk copy" invece di "full". Però dovresti
valutare due cose (tre, potrei aver detto una belinata ;)):
- La truncate è loggabile?
- E se si, come impatterà sulle prestazioni?
ciao

 - E se si, come impatterà sulle prestazioni?
Non ho trovato nulla che si avvicinasse a ciò. In realtà posso anche
eseguire una DELETE FROM al posto della TRUNCATE, visto che quest'ultima,
pensandoci bene, non è loggata.
Ma resta il mio problema. Se la copia va male devo ripristinare i record che
avevo prima. Attualmente la cosa sta funzionando copiando i record in
un'altra tabella. Quando termino elimino i record dalla tabella definitiva e
"travaso" la tabella temporanea in quella definitiva. Almeno sono sullo
stesso db e stesso server.
Ma diciamo che è una soluzione che non mi piace per niente.
Suggerimenti?
Ciao.

 avevo prima.
uhmmm se va male e' il dbms che te li ripristina all'interno della
transazione (o comunque questa è la strada che seguirei)

 transazione (o comunque questa è la strada che seguirei)
Si... perfetto.. è quello che vorrei fare anch'io... ma come?
Per adesso se la copia dei record va male mi ritrovo la mia tabella locale
vuota. Cosa molto grave.
Chi deve gestire la transazione?
Ciao.

 Chi deve gestire la transazione?
BEGIN TRANSACTION
.
.
.
.
se tutto_ok allora  COMMIT altrimenti ROLLBACK
come inserirlo nel DTS non c'ho mai provato

 come inserirlo nel DTS non c'ho mai provato
Ed è questo il mio problema!
Ciao.

 Ed è questo il mio problema!
nelle proprietà del package, nella tab Advanced, c'e' un'area che inizia
con un flag: Use Transactions
ritengo sia da queste parti

 ritengo sia da queste parti
Si.. ho provato ad usarlo, ma non supporta le transazioni distribuite con
Oracle.
Da quello che vedo non ci sono ulteriori soluzioni oltre alla tabella
temporanea da utilizzare per una prima copia dei record, per poi riportare
il tutto nella tabella definitiva.
Ma non mi sembra corretto creare tante tabelle temporanee quante sono le
tabelle da popolare con l'importazione.
Ciao e grazie.

 Oracle.
uhmmm xche' la devi distribuire? L'output e la truncate (ed i casini)
non sono solo su sqlserver?

 non sono solo su sqlserver?
Il DTS importa dati da Oracle (il server è in un altra città...
distribuitissimo :-) ) e la negazione dell'esecuzione di transazioni
distribuite la ricevo proprio come messaggio di errore in fase di
esecuzione.


Ciao,
Prova a vedere se il seguente articolo della Knowledge Base può esserti di
aiuto:
"HOW TO: Set Up and Troubleshoot a Linked Server to Oracle in SQL Server"
http://support.microsoft.com/?kbid=280106
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
UGIdotNET - 
http://www.ugidotnet.org
UGISS - 
http://www.ugiss.org

 aiuto:
Nella vecchia versione utilizzavo un linked server. Ma ora, dopo aver
installato l'OLE DB per Oracle, vorrei puntare direttamente al server. Tra
l'altro ne guadagno anche in termini di prestazioni, almeno per quello che
sto vedendo.
Pare che non vi sia soluzione...
Ciao.