2009-06-23 10 views
10

c'è un modo per dire al server SQL di usare l'hint (nolock) o ogni selezione in una stored procedure?SQL Server: come impostare il suggerimento (nolock) come predefinito?

è abbastanza faticoso per aggiungerlo alla ciascuno un ogni selezionare ....

+2

Volete stare attenti a fare questo in particolare in ambienti di transazione ad alto volume a causa delle letture sporche. –

+2

Prima di fare ciò, assicurati di aver compreso tutte le conseguenze delle letture sporche. Potresti finire alla ricerca di record mancanti o di doppia lettura nelle query, che in molti casi non sono una buona cosa per la tua app. –

risposta

6

credo che questo è quello che stai cercando ...

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

5

È vuole utilizzare il seguente syntax:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

ho trovato questo B Osservando il suggerimento della tabella NOLOCK si trova here. L'hint di tabella WITH (NOLOCK) equivale a impostare il livello di isolamento su READ UNCOMMITTED. Ecco il frammento dal MSDN:

NOLOCK è equivalente a READUNCOMMITTED. Per ulteriori informazioni, vedere READUNCOMMITTED più avanti in questo argomento.

14

Come altri dire giustamente, una globale (nolock) è fatto utilizzando LEGGI UNCOMMITTED.

Tuttavia, prima di proseguire su questa rotta, vale la pena provare prima READ COMMITTED SNAPSHOT. Ciò significa che le tue letture non verranno bloccate da inserimenti/aggiornamenti in corso e significa che i dati non sono sporchi, solo scaduti.

0

Tuttavia, si può finire con dati errati. Nel 2005, è preferibile utilizzare l'isolamento dello snapshot: "Quando Isolamento Snapshot aiuta e quando fa male" http://www.devx.com/dbzone/Article/32957