Domanda

Esiste un modo per bloccare una riga nel database SQL 2005-2008 senza avviare una transazione, quindi altri processi non possono aggiornare la riga finché non viene sbloccata?

È stato utile?

Soluzione

Puoi usare RowLock o altri suggerimenti ma dovresti essere attento ..

Il suggerimento HOLDLOCK indica a SQL Server di conservare il blocco fino a quando non si esegue il commit della transazione. Il suggerimento ROWLOCK bloccherà solo questo record e non genererà un blocco di pagine o tabelle.

Il blocco verrà inoltre rilasciato se si chiude la connessione o si verifica un timeout. Starei MOLTO attento a farlo poiché fermerà tutte le istruzioni SELECT che colpiscono questa riga morti nelle loro tracce. SQL Server ha numerosi suggerimenti di blocco che è possibile utilizzare. Puoi vederli nella documentazione online quando esegui una ricerca su HOLDLOCK o ROWLOCK.

Altri suggerimenti

Tutto ciò che esegui nel server avviene in una transazione, implicita o esplicita.

Non è possibile semplicemente bloccare una riga senza transazione (rendere la riga di sola lettura). Puoi rendere il database di sola lettura, ma non solo di una riga.

Spiega il tuo scopo e potrebbe essere una soluzione migliore. Livelli di isolamento e suggerimenti di blocco e versioning delle righe .

Devi bloccare una riga o Blocchi applicazione SQL Server fai quello che ti serve?

Un blocco applicazione è solo un blocco con un nome che puoi " bloccare " ;, " sbloccare " e controlla se è bloccato. vedere il link sopra per i dettagli. (Si sbloccano se la connessione viene chiusa ecc., Quindi tendono a ripulirsi)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top