NOLOCK Quando questa opzione è selezionata, SQL Server legge o modifica i dati senza alcun blocco. In questo caso, l'utente può leggere i dati di una Transazione Non Compromettente o di un Rollback, noto come "dati sporchi".
BLOCCO DI TENUTA Quando questa opzione è selezionata, SQL Server mantiene questo blocco condiviso fino alla fine dell'intera transazione senza rilasciarlo durante il percorso.
AGGIORNAMENTO Quando questa opzione è selezionata, SQL Server utilizza un blocco modify invece di uno condiviso durante la lettura dei dati e mantiene questo lock fino alla fine dell'intera transazione o comando. Questa opzione garantisce che più processi possano leggere i dati contemporaneamente, ma solo quel processo possa modificarli.
TABLOCK Quando questa opzione è selezionata, SQL Server applicherà un blocco condiviso sull'intera tabella fino alla fine del comando. Questa opzione garantisce che altri processi possano solo leggere i dati e non modificarli.
PAGLOCK Questa opzione è l'opzione predefinita e, una volta selezionata, SQL Server utilizza un blocco di pagina condiviso.
TABLOCKX (Blocco Esclusivo del Tavolo) Quando questa opzione è selezionata, SQL Server applicherà un blocco sull'intera tabella fino alla fine del comando o della transazione. Questo impedirà ad altri processi di leggere o modificare i dati nella tabella.
HOLDLOCK mantiene il blocco condiviso fino al completamento dell'intera transazione e dovrebbe essere rilasciato non appena l'oggetto bloccato non è più necessario, pari al livello di isolamento delle transazioni SERIALIZABLE
L'istruzione NOLOCK viene eseguita senza emettere un blocco condiviso, permettendo letture sporche, che corrispondono al livello di isolamento della transazione READ UNCOMMITTED
PAGLOCK utilizza più blocchi di pagina in cui viene utilizzato un blocco di tabella
READPAST permette al server SQL di saltare qualsiasi linea bloccata ed eseguire transazioni, e per i livelli di isolamento delle transazioni READ UNCOMMITTED, saltare solo i lock RID, non i blocchi di pagina, zona e tabella
ROWLOCK impone l'uso dei rowlock
TABLOCKX impone l'uso di un blocco esclusivo a livello di tabella, che impedisce a qualsiasi altra transazione di utilizzare la tabella durante la transazione
UPLOCK impone l'uso di aggiornamenti quando si legge una tabella senza un blocco condiviso
Nota: La differenza tra bloccare una tabella in un database SELEZIONA * DA TABELLA CON (HOLDLOCK) Altre transazioni possono leggere la tabella, ma non possono aggiornare o eliminare SELEZIONA * DA TABELLA CON (TABLOCKX) Altre transazioni non possono leggere, aggiornare e eliminare tabelle |