Saltar al contenido

Diario de un DBA

Problemas y soluciones para SQL Server

Menú
  • Inicio
  • Consultoria gratuita
  • tempdb
  • Curso Azure DP-300
  • Rendimiento
  • Seguridad
  • Sobre Mi
Menú

Cambiar base de datos de SINGLE_USER a MULTI_USER en SQL Server

Publicada el abril 15, 2024abril 15, 2024 por solracamo

Contenido del post:

Toggle
  • Matar todas las conexiones a una base de datos en SQL Server
  • Cambiar base de datos en uso a MULTI_USER

A veces los problemas más estupidos para nosotros pueden ser realmente complejos para nuestros clientes.

El otro dia un cliente nos abrió un ticket para decirnos que estaban haciendo pruebas con una base de datos de test y «la base de datos se habia cambiado a SINGLE_USER» (supongo que se cambió sóla obviamente sin que ellos lo hicieran…) y nos pedian ayuda para cambiarla de vuelta a MULTI_USER.

La forma más sencilla, y la que probablemente el cliente haya probado es a hacer click derecho sobre la base de datos, ir a las opciones y cambiarla de nuevo a MULTI_USER, pero esto podria no ser posible si la base de datos está en uso.

Para solucionar esto, os traigo un pequeño script que os va a ayudar a solucionar este problema rapidamente.

Matar todas las conexiones a una base de datos en SQL Server

Creo que el titulo se explica por si sólo, sólo teneis que modificar el nombre de la base de datos para matar todas las conexiones existentes a esta. Lo tengo para varias versiones de SQL Server.

2012 o más nuevas

USE [master];
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'
FROM sys.dm_exec_sessions
WHERE database_id  = db_id('BaseDeDatos')
EXEC(@kill);

Anteriores a 2012

USE master;
DECLARE @kill varchar(8000); SET @kill = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses
WHERE dbid = db_id('BaseDeDatos')
EXEC(@kill);

OK, una vez que ya tenemos esto pasemos al siguiente paso.

Cambiar base de datos en uso a MULTI_USER

Lo que haremos ahora será juntar en una misma query uno de los scripts anteriores para matar las conexiones con la query encargada de cambiar el modo de MULTI_USER a SINGLE_USER. Se veria de esta forma.

USE [master];
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'
FROM sys.dm_exec_sessions
WHERE database_id  = db_id('BaseDeDatos')
EXEC(@kill);
GO
ALTER DATABASE [BaseDeDatos] SET MULTI_USER 

Mi recomendación es que primero selecciones y ejecuteis el script para matar las conexiones e inmediatamente después hagais lo mismo con la otra parte, pero en teoria podriais ejecutarlo todo al mismo tiempo y deberia funcionar.

Y esto es todo, una solución simple para un problema simple.

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Consultoria Gratis

¿Tienes un problema o una consulta sobre tu servidor SQL Server? ¿Necesitas hacer algún tipo de mantenimiento o tarea en tu instancia, pero no tienes claro cómo hacerlo?

Envíame un email con tu caso y te contestaré lo antes posible de forma totalmente gratuita.

Puedes utilizar el formulario que encontrarás haciendo click aquí.

Sobre mi

Efectivamente, soy un muñeco de slack con la camiseta de Fernando Alonso en Renault, pero también soy una DBA mid level que vive y trabaja en inglaterra como consultor SQL Server.

El objetivo de este blog es escribir los problemas con los que me he ido encontrando y cómo los solucioné. Si estas soluciones han servido para mí, es posible que también lo hagan para ti, ¿no?

Otras soluciones

  • Recuperar la password de la cuenta SA en SQL Serveroctubre 5, 2024
  • Always On en SQL Server. Todo lo que necesitas saberagosto 24, 2024
  • Recuperar una tabla borrada en SQL Serveragosto 18, 2024
  • Mover bases de datos a otro disco en SQL Serveragosto 11, 2024
  • Comprobar los últimos backups tomados en una instancia SQL Serverjunio 29, 2024
  • Comprobar fragmentación en SQL Serverjunio 23, 2024

Curso Azure DP-300 Gratis

  • Azure DP-300 curso en Español – Parte 1noviembre 17, 2022
  • Crear una máquina virtual con SQL server en Azurenoviembre 17, 2022
  • Crear un servidor SQL Server en Azure.noviembre 22, 2022
  • Azure DP-300 curso en Español – Parte 2noviembre 24, 2022
  • Azure DP-300 curso en Español – Parte 3diciembre 1, 2022
  • Azure DP-300 curso en Español – Parte 4diciembre 14, 2022

Consulta las páginas que nadie consulta:
Privacidad
Cookies

Escríbeme!
Contacto

© 2025 Diario de un DBA