ciao a tutti...
come si fa a sapere in sql server che livello di blocchi ho sul database?
io dovrei mettere le tabelle del mio DB in read uncommitted per gestire la concorrenza sui dati.
come si fa?
grazie a tutti.
ciao a tutti...
come si fa a sapere in sql server che livello di blocchi ho sul database?
io dovrei mettere le tabelle del mio DB in read uncommitted per gestire la concorrenza sui dati.
come si fa?
grazie a tutti.
Puoi settare l'isolamento a livello di sessione con questo codice t-sql:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
![]()
grazie!!!
puoi spiegarmi pero nel dettaglio cosa fa di preciso la tua stringa e che rischi corro...
Ah scusa.. pensavo ne fossi già al corrente
Ci sono 4 livelli di isolamento su SqlServer:
READ UNCOMMITTED
Possibilità di leggere i dati dal database anche se sono presenti blocchi da parte di altre transazioni. Tramite questo tipo di isolamento potresti leggere dati non ancora aggiornati da altre transazioni in corso.
READ COMMITTED
Permette di leggere dati solo già aggiornati dalle altre transazioni in corso.
REPEATABLE READ
Crea un lock sulla tabella/e per evitare che altre transazioni effettuino aggiornamenti (ma non inserimenti).
SERIALIZABLE
Crea un blocco esclusivo sulla tabella/e per tutta la durata della transazione.
Se cerchi in giro trovi maggiori info a riguardo.. io ho scritto un pò in fretta
![]()
ma il codice che mi hai postato lo lancio da query analizer?
e ha effetto su tutti i db di sql server o solo su quello che voglio io?
perche ti spiego ho costantemente problemi di timeout su sql server...penso sia proprio dovuto al controllo sulla concorrenza dei dati.
Penso di risolverlo mettendo le tabelle in read uncommitted.
Perchè penso che attualmente ilproblema sia dovuto al fatto che troppi record rimangono occupati in accesso esclusivo...
Il codice che ti ho dato fa riferimento ad una transazione.
In che modo leggi i dati dal db? Tramite il query analizer? In questo caso basta indicare quella riga in alto prima delle query.
Se utilizzi asp/asp.net puoi direttamente indicare la stringa prima delle istruzioni sql ma su asp.net esistono proprietà e metodi apposta per la classe SqlClient.
![]()