Domanda

C'è un modo per rendere CON (NOLOCK) essere applicato su qualsiasi corsa istruzione SELECT su un particolare database?

È stato utile?

Soluzione

No, ma è possibile utilizzare la Isolamento dello snapshot livello di database in SQL Server 2005 e su, dovrebbe aiutare molto con deadlock

SQL Server 2005 introduce le estensioni per i livelli di isolamento SQL-92, con l'introduzione del livello di isolamento SNAPSHOT e un ulteriore implementazione di Read Committed. Il nuovo livello di isolamento READ_COMMITTED_SNAPSHOT può sostituire in modo trasparente LEGGI impegnato per tutte le transazioni.

SNAPSHOT specifica di isolamento che i dati letti all'interno di una transazione non potrà mai riflettere le modifiche apportate da altre transazioni simultanee. L'operazione utilizza le versioni di riga di dati che esistono quando inizia la transazione. Nessun blocco sono posizionati sui dati quando viene letto, in modo da transazioni snapshot non bloccano altre transazioni di scrivere i dati. Le operazioni che i dati di scrittura non bloccano transazioni snapshot dalla lettura dei dati. È necessario attivare l'isolamento dello snapshot impostando l'opzione di database ALLOW_SNAPSHOT_ISOLATION al fine di utilizzarlo.

L'opzione di database READ_COMMITTED_SNAPSHOT determina il comportamento di lettura di default livello di isolamento commesso quando l'isolamento dello snapshot è attivato in un database. Se non si specifica esplicitamente READ_COMMITTED_SNAPSHOT ON, Read Committed viene applicato a tutte le operazioni implicite. Ciò produce lo stesso comportamento di impostazione READ_COMMITTED_SNAPSHOT OFF (default). Quando READ_COMMITTED_SNAPSHOT OFF è in vigore, gli usi Motore di database si blocca per far rispettare il livello di isolamento predefinito condivise. Se si imposta l'opzione di database READ_COMMITTED_SNAPSHOT su ON, la riga utilizza il motore di database delle versioni e l'isolamento dello snapshot come predefinito, invece di utilizzare serrature per proteggere i dati.

Altri suggerimenti

Dipende dalla vostra base di dati. Alcuni motori di database di default consentono di sporcare legge o comportamenti simili.

Esempio, alcune versioni di MSSQL Server consentono di impostare il database come isolamento dello snapshot, che è descritto nel post di SQLMenace.

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