Pregunta

¿Alguien sabe de una manera de forzar una sugerencia nolock en todas las transacciones emitido por un usuario?Me gustaría proporcionar un inicio de sesión para un equipo de apoyo a la consulta del sistema de producción, pero yo quiero proteger, obligando a nolock en todo lo que hacen.Estoy usando SQL Server 2005.

¿Fue útil?

Solución

Esta es una dolorosa y chapucero manera de hacerlo, pero es lo que estamos haciendo en el lugar donde trabajo.También estamos utilizando classic asp, por lo que estamos usando en línea llamadas sql.en realidad nos envuelva la llamada sql en una función (aquí se puede ver un usuario en concreto) y añadir "CONJUNTO de TRANSACCIÓN de NIVEL de AISLAMIENTO READ UNCOMMITTED" para el comienzo de la llamada.

Creo que funcionalmente esta es la misma como la sugerencia de bloqueo.Lo siento, no tenemos un puro SQL respuesta, yo estaría interesado en saber si usted encuentra una buena manera de hacer esto.

Otros consejos

Usted puede configurar su personal de apoyo del SQL Management Studio para establecer el nivel de aislamiento predeterminado para la LECTURA no confirmada (Herramientas->Opciones->Ejecución de la Consulta->SQL Server->Avanzado).Esto es prácticamente lo mismo que tener NOLOCK en todo.

Las desventajas son que tendrías que hacer esto para cada uno de los miembros de su equipo de apoyo, y que tendría la capacidad de cambiar la configuración en el SQL Management Studio.

Bien, es necesario aclarar lo que usted está tratando de hacer aquí.

Si usted está tratando de reducir el bloqueo en la base de datos y, posiblemente, ofrecer su apoyo a los usuarios con la información que se puede conseguir nunca realmente comprometidos en la base de datos.Mientras que permite a escribir todo lo que quiera a la base de datos, entonces nolock es el camino a seguir.Obtendrá la ventaja añadida de que el usuario será capaz de aumentar su nivel de aislamiento mediante el NIVEL de AISLAMIENTO de TRANSACCIÓN de comandos.

Si usted está tratando de limitar el daño que pueden causar al ejecutar cosas en contra de la DB, mira en la implementación de la seguridad, asegurarse de que sólo se permite el acceso de lectura a las tablas y mirar a despojar al acceso de todos los procedimientos almacenados y funciones.

Me parece NOLOCK está muy mal entendido en el desbordamiento de pila.

Puede crear un usuario limitado para el equipo de apoyo y, a continuación, escribir vistas o procedimientos almacenados con el nolock-sugerencia.A continuación, sólo dan acceso a esos y no directa de la tabla seleccionar el acceso.

Como Espo insinuado, estoy bastante seguro de que no hay una forma directa de hacer lo que estás preguntando.Como él dijo, usted puede ordenar de lograrlo, limitando el acceso del usuario a sólo procs que se han incorporado en NOLOCK codificado en ellos.

Por desgracia, restringir a los usuarios a SPs derrotas el propósito de esta.Tenía la esperanza de que hubo alguna manera yo podría permitir a consulta de todo y de ese modo mejorar sus habilidades de solución de problemas.Gracias por su ayuda chicos.

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