La Web del Programador: Comunidad de Programadores
 
    Pregunta:  20494 - PROBLEMAS CON MULTIUSUARIO EN SQL SERVER
Autor:  Ignacio Palomino
Tengo una aplicación de acceso a BD en Visual, para la BD utilizo SQL server y como conexión ADODB. Se supone que sql es por defecto multiusuario y cuando abro los recordset lo hago con el bloqueo menos restriccivo posible, por registro. Pero al abrir dos instancias una da time out.
Gracias.

  Respuesta:  Pedro Herrarte Sanchez
Parece que tienes un problema de bloqueos.
SQL Server (lo que te digo es valido para version 7) utiliza varios tipos de bloqueos en sus transacciones.
Puede ser que estes habriendo una transaccion (metodo BeginTran de la conexion) y que no la estes confirmando (metodo CommitTran o RollbackTran), esto habe que SQL server server mantega "bloqueos de intento" y no permita el acceso a otras transacciones no ya al registro sino a toda la pagina de datos.
Te explico:Cuando haces un update y pones un 7 donde habia un 5, pero no le das la orden de marcado como correcto(commit) cuando otra transaccion intenete leer el dato no sabra lo que contine(tenia un 5 pero estas escribiendo un 7).
Existe una forma de marcar el nivel de aislamiento de las transacciones para que no establezcan estos "bloqueos de intento". Ejecuta como si fuese una SQL la siguiente instruccion:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED
Con esto eliminas los bloqueos de intento.
Saludos.

  Respuesta:  googer
¿Y al abrir una sóla instancia no te da time out, aunque sólo sea a veces?

NO creo que el problema sea que es una aplicación multiusuario. No sé si estaré en lo cierto o no, pero creo que abres un recordset y, sobre el mismo, ejecutas un bucle o haces operaciones que "entretienen" al SQL más de 30 segundos (aproximadamente).

CREO y repito CREO que el problema está en que debes hacer el código más dinámico. Yo tengo aplicaciones en las que concurren más de 50 usuarios a la vez y no me da ni un problema en cuanto a multiusuario. Ahora bien, tuve que corregir mucho código, e incluso el diseño de las tablas y la base de datos, para evitar el error time out.

Espero que te sirva.

Besos para ellas y saludos para ellos.