En algunas ocasiones nos encontramos con un error que nos indica que una base de datos ya esta abierta y solo puede tener un usuario al mismo tiempo, esto se debe a que la base de datos fue configurada para ser Single User, el proceso puede parecer muy sencillo, simplemente cerrar la sesión del usuario que tiene abierta la base de datos, pero esto no siempre es así, hay procesos, como algunos jobs, índices u otros procesos que nos hará complicada la tarea, para eso tenemos este ejemplo:
1. Vamos a crear nuestra base de datos de prueba
3. Configuramos la base de datos en modo Usuario único o single user mediante la siguiente instrucción.
Eso se debe a que no podemos tener mas de una sesión abierta de esa base de datos por haberla establecido como usuario único, lo más sencillo sería cerrar la otra ventana para liberar la base, pero no tendría sentido este post, lo que nos interesa es saber, que proceso y que máquina está bloqueando la base, y para eso utilizaremos las vistas del sistema.
Como podemos observar nuestra base de datos tiene el ID 5, con esos datos ya podemos proceder con el siguiente comando:
7. Nos encontramos conque el proceso numero 7 es quien tiene ocupada esa base de datos, ahora podemos ir mas allá de esa información y averiguar que usuario y que equipo están bloqueando y eso lo haremos mediante el siguiente comando:
En esta imagen podemos apreciar quien es el usuario y el equipo que esta bloqueando, ahora solo bastaría con "matar" a ese proceso, y esto lo haremos mediante el comando:
Hasta aquí el post, espero sea de su agrado y utilidad, si tienen alguna duda, que no les de pena preguntar. Espero compartan, comenten, o den clic en algún anuncio que les interese.
Muchas gracias
1. Vamos a crear nuestra base de datos de prueba
CREATE DATABASE PRUEBAS
GO
2. Creamos una tabla simplemente como prueba
CREATE TABLE
EMPLEADOS (
ID INT PRIMARY KEY IDENTITY,
NUMEROEMPLEADO
INT,
NOMBRES VARCHAR(200),
APELLIDOP
VARCHAR(100),
APELLIDOM
VARCHAR(100),
RFC VARCHAR(20)).
3. Configuramos la base de datos en modo Usuario único o single user mediante la siguiente instrucción.
ALTER DATABASE PRUEBAS SET SINGLE_USER
GO
4. Llenamos la tabla con algún dato de prueba mediante una transacción, pero para el ejemplo, no completaremos la transacción y la dejaremos a medias
begin tran
INSERT INTO
EMPLEADOS (
NUMEROEMPLEADO, NOMBRES, APELLIDOP, APELLIDOM, RFC) VALUES
(5965, 'LUIS EMMANUEL', 'URIAS', 'ROBLES', 'UIRL8509046P8')
5. Ahora en otra ventana intentaremos utilizar esa base de datos y obtendremos un error como el siguiente:
use PRUEBAS
go
Msg 924,
Level 14, State 1, Line 1
Database
'PRUEBAS' is already open and can only have one user at a time.
Eso se debe a que no podemos tener mas de una sesión abierta de esa base de datos por haberla establecido como usuario único, lo más sencillo sería cerrar la otra ventana para liberar la base, pero no tendría sentido este post, lo que nos interesa es saber, que proceso y que máquina está bloqueando la base, y para eso utilizaremos las vistas del sistema.
6. Primero tenemos que saber que ID tiene nuestra base de datos a la cual queremos acceder, y para eso utilizaremos la siguiente sentencia:
select * from sys.databases
Como podemos observar nuestra base de datos tiene el ID 5, con esos datos ya podemos proceder con el siguiente comando:
select * from sys.sysprocesses where dbid = 5
exec sp_who2 57
En esta imagen podemos apreciar quien es el usuario y el equipo que esta bloqueando, ahora solo bastaría con "matar" a ese proceso, y esto lo haremos mediante el comando:
kill 57
go
Una vez muerto el proceso, podremos abrir la base de datos en otra sesión, y en esta ocasión ponerla como multi usuario:
use PRUEBAS
go
ALTER DATABASE PRUEBAS SET MULTI_USER
GO
Hasta aquí el post, espero sea de su agrado y utilidad, si tienen alguna duda, que no les de pena preguntar. Espero compartan, comenten, o den clic en algún anuncio que les interese.
Muchas gracias
muchas gracias funciono perfectamente
ResponderBorrarEXCELENTE, muchas gracias me funcionó a la primera.
ResponderBorrarFuncionando, muchas gracias
ResponderBorrarIdolo !!!!
ResponderBorrar