Pregunta

Yo sé que en la base de datos Oracle puedo configurar una bandera, que todas las consultas de selección se ejecuta en una base de datos específica se puede ejecutar como si se añadía la indirecta NOLOCK. ¿Hay algo similar en SQL Server?

¿Fue útil?

Solución

Se puede configurar la base de datos en READ_ONLY modo, que por cierto cambia algunas de las reglas de transacción, pero no creo que haya nada más cerca de una NOLOCK global.

Editar

Si usted quiere ser capaz de realizar eliminaciones, inserciones y actualizaciones, pero no desea que los lectores para bloquear o que tenga que especificar pistas o los niveles de aislamiento, también se puede considerar encender READ_COMMITTED_SNAPSHOT , pero la semántica hay de nuevo no es la misma que la sugerencia NOLOCK.

Otros consejos

No a un nivel por base de datos. Sólo puede hacerlo con pistas o set transaction isolation level. Se puede establecer una base de datos a modo de sólo lectura, lo que puede tener ese efecto de forma predeterminada, pero que lo hará (como su nombre indica) escribe oponen a la base de datos.

Esto podría ser útil para una base de datos que se actualiza periódicamente. Configura la base de datos de sólo lectura y la ajuste en los cambios que permitan la escritura para luego volver a sólo lectura.

No para toda la base de datos, pero para cada consulta que hace:

SELECT a, b
FROM t1
WITH (NOLOCK)
WHERE t1.c = @value

o

SELECT a, b
JOIN t1
ON t1.id = t2.id
WITH (NOLOCK)
FROM t2
WHERE t2.c = @value

etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top