Mi collego a un server SQL senza l'autocommit. Se tutto ha successo, chiamo commit. Altrimenti, esco. Devo richiamare esplicitamente il rollback o verrà ripristinato automaticamente quando chiudiamo la connessione senza eseguire commit?Devo chiamare il rollback se non commetto mai?
Nel caso in cui sia importante, eseguo i comandi SQL dall'interno di proc sql in SAS.
AGGIORNAMENTO: Sembra che SAS possa chiamare il commit automaticamente alla fine del blocco sql proc se il rollback non viene chiamato. Quindi in questo caso il rollback sarebbe più che una buona pratica; sarebbe necessario.
Aggiornamento finale: Abbiamo finito per passare a un nuovo sistema, che mi sembra comportarsi in modo opposto rispetto al precedente. Al termine della transazione senza specificare il commit o il rollback, verrà eseguito il rollback. Quindi, il consiglio dato di seguito è sicuramente corretto: sempre esplicitamente commit o rollback.
Che effetto avrebbe il pool di connessioni su questo? –
Se gestisci le tue transazioni con le migliori pratiche in mente non dovresti preoccuparti, @JoeStefanelli :-) Cosa intendo - 1.) dentro e fuori la tua transazione il più velocemente possibile - fai solo ciò che è necessario al suo interno per mantenere l'ingombro e l'impatto di piccole dimensioni e 2.) corretta gestione degli errori e pulizia da impegnare quando fatto bene e rollback quando no. Non approverò un cambiamento in un ambiente che gestisco se viola questi due principi di base. Quindi il pooling delle connessioni non avrà alcun effetto. –
Concordato che è meglio fare il tuo commit esplicito quando le cose sono fatte bene. La mia domanda era mirata più alla parte "*** dovrebbe *** arretrare sulla chiusura della connessione" della tua risposta. –