Informazioni sul controllo della concorrenza

Scaricare il driver JDBC

Per controllo della concorrenza si intendono le diverse tecniche utilizzate per mantenere l'integrità del database quando più utenti aggiornano le righe contemporaneamente. Una gestione non corretta della concorrenza può causare problemi come letture sporche, letture fantasma e letture non ripetibili. Microsoft JDBC Driver per SQL Server fornisce interfacce per tutte le tecniche di concorrenza usate da SQL Server per risolvere questi problemi.

Nota

Per altre informazioni sulla concorrenza di SQL Server, vedere "Gestione dell'accesso ai dati simultaneo".

Osservazioni:

Il driver JDBC supporta i tipi di concorrenza seguenti:

Tipo di concorrenza Caratteristiche Blocchi a livello di riga Descrizione
CONCUR_READ_ONLY Sola lettura No Gli aggiornamenti eseguiti tramite il cursore non sono consentiti e sulle righe del set di risultati non viene mantenuto attivo alcun blocco.
CONCUR_UPDATABLE Lettura/scrittura ottimistica No Il database presume che la contesa a livello di riga sia improbabile, ma possibile. L'integrità delle righe viene verificata tramite confronto del timestamp.
CONCUR_SS_SCROLL_LOCKS Lettura/scrittura pessimistica Il database presume che la contenzione a livello di riga sia probabile. L'integrità delle righe è garantita dal blocco delle righe.
CONCUR_SS_OPTIMISTIC_CC Lettura/scrittura ottimistica No Il database presuppone che la contenzione tra righe sia improbabile, ma possibile. L'integrità delle righe viene verificata tramite confronto del timestamp.

In SQL Server 2005 (9.x) e versioni successive il server modifica questa impostazione in CONCUR_SS_OPTIMISTIC_CCVAL se la tabella non contiene una colonna timestamp.

In SQL Server 2000 (8.x), se la tabella sottostante contiene una colonna timestamp, viene usata l'opzione OPTIMISTIC WITH ROW VERSIONING anche se è specificata l'opzione OPTIMISTIC WITH VALUES. Se viene specificato OPTIMISTIC WITH ROW VERSIONING e la tabella non dispone di timestamp, viene utilizzato OPTIMISTIC WITH VALUES.
CONCUR_SS_OPTIMISTIC_CCVAL Lettura/scrittura ottimistica No Il database presuppone che i conflitti tra righe siano improbabili, ma possibili. L'integrità delle righe viene verificata tramite confronto dei dati della riga.

Set di risultati non aggiornabili

Un set di risultati aggiornabile è un set di risultati in cui è possibile inserire, aggiornare ed eliminare righe. Nei casi seguenti SQL Server non può creare un cursore aggiornabile. e viene generata l'eccezione "Il set di risultati non è aggiornabile".

Causa Descrizione Rimedio
L'istruzione non viene creata utilizzando la sintassi JDBC 2.0 (o versioni successive) JDBC 2.0 ha introdotto nuovi metodi per creare statement. Se viene utilizzata la sintassi JDBC 1.0, il set di risultati per impostazione predefinita è di sola lettura. Specificare il tipo di set di risultati e la concorrenza in fase di creazione dell'istruzione.
L'istruzione viene creata utilizzando TYPE_SCROLL_INSENSITIVE SQL Server crea un cursore snapshot statico. Il cursore è disconnesso dalle righe della tabella sottostante per proteggerlo dagli aggiornamenti apportati alle righe da altri utenti. Utilizzare TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC o TYPE_FORWARD_ONLY con CONCUR_UPDATABLE per evitare di creare un cursore statico.
La struttura della tabella non consente un cursore di tipo KEYSET o DYNAMIC La tabella sottostante non contiene chiavi univoche per consentire a SQL Server di identificare in modo univoco una riga. Aggiungere chiavi univoche alla tabella per consentire l'identificazione univoca di ogni riga.