selecciono seguridad script restaurarlo restaurar query por para otro nombre ningun datos copias copia conjunto con comando codigo sql-server sql-server-2005 backup restore disconnect

sql-server - seguridad - restaurar base de datos sql server query



Al restaurar una copia de seguridad, ¿cómo desconecto todas las conexiones activas? (9)

SQL Server Management Studio 2005

Cuando hace clic derecho en una base de datos y hace clic en Tasks y luego en Detach Database , aparece un cuadro de diálogo con las conexiones activas.

Separar pantalla http://www.kodyaz.com/images/articles/kill-all-processes/detach-database.JPG

Al hacer clic en el hipervínculo en "Mensajes" puede eliminar las conexiones activas.

A continuación, puede eliminar esas conexiones sin separar la base de datos.

Más información here .

SQL Server Management Studio 2008

La interfaz ha cambiado para SQL Server Management studio 2008, aquí están los pasos (a través de: Tim Leung )

  1. Haga clic con el botón derecho en el servidor en el Explorador de objetos y seleccione ''Monitor de actividad''.
  2. Cuando esto se abra, expanda el grupo Procesos.
  3. Ahora usa el menú desplegable para filtrar los resultados por nombre de base de datos.
  4. Elimine las conexiones del servidor seleccionando la opción de ''Hacer clic en el proceso''.

Mi SQL Server 2005 no restaura una copia de seguridad debido a las conexiones activas. ¿Cómo puedo forzarlo?


Desea establecer su base de datos en el modo de usuario único, realice la restauración y luego configúrelo de nuevo en multiusuario:

ALTER DATABASE YourDB SET SINGLE_USER WITH ROLLBACK AFTER 60 --this will give your current connections 60 seconds to complete --Do Actual Restore RESTORE DATABASE YourDB FROM DISK = ''D:/BackUp/YourBaackUpFile.bak'' WITH MOVE ''YourMDFLogicalName'' TO ''D:/Data/YourMDFFile.mdf'', MOVE ''YourLDFLogicalName'' TO ''D:/Data/YourLDFFile.ldf'' /*If there is no error in statement before database will be in multiuser mode. If error occurs please execute following command it will convert database in multi user.*/ ALTER DATABASE YourDB SET MULTI_USER GO

Referencia: Pinal Dave ( http://blog.SQLAuthority.com )

Referencia oficial: https://msdn.microsoft.com/en-us/library/ms345598.aspx


Este código funcionó para mí, mata todas las conexiones existentes de una base de datos. Todo lo que tiene que hacer es cambiar la línea Establezca @dbname = ''databaseName'' para que tenga su nombre de base de datos.

Use Master Go Declare @dbname sysname Set @dbname = ''databaseName'' Declare @spid int Select @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) While @spid Is Not Null Begin Execute (''Kill '' + @spid) Select @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) and spid > @spid End

después de esto, pude restaurarlo


Me encontré con este problema al automatizar un proceso de restauración en SQL Server 2008. Mi (exitoso) enfoque fue una combinación de dos de las respuestas proporcionadas.

Primero, me encuentro con todas las conexiones de dicha base de datos y las mato.

DECLARE @SPID int = (SELECT TOP 1 SPID FROM sys.sysprocess WHERE dbid = db_id(''dbName'')) While @spid Is Not Null Begin Execute (''Kill '' + @spid) Select @spid = top 1 spid from master.dbo.sysprocesses where dbid = db_id(''dbName'') End

Luego, configuré la base de datos en un modo de usuario único

ALTER DATABASE dbName SET SINGLE_USER

Luego, ejecuto la restauración ...

RESTORE DATABASE and whatnot

Mata a las conexiones de nuevo

(same query as above)

Y configure la base de datos a multi_user.

ALTER DATABASE dbName SET MULTI_USER

De esta manera, me aseguro de que no haya conexiones que contengan la base de datos antes de establecer en modo único, ya que la primera se congelará si las hay.


Ninguno de estos funcionaba para mí, no podía eliminar o desconectar usuarios actuales. Tampoco pude ver ninguna conexión activa a la base de datos. Reiniciar SQL Server (clic derecho y seleccionar Reiniciar) me permitió hacerlo.


Ninguno de los anteriores funcionó para mí. Mi base de datos no mostró ninguna conexión activa usando Activity Monitor o sp_who. Finalmente tuve que:

  • Haga clic derecho en el nodo de base de datos
  • Seleccione "Separar ..."
  • Marque la casilla "Soltar conexiones"
  • Volver a unir

No es la solución más elegante, pero funciona y no requiere reiniciar SQL Server (no es una opción para mí, ya que el servidor de bases de datos alojó un montón de otras bases de datos)


Para agregar a los consejos ya dados, si tiene una aplicación web ejecutándose a través de IIS que usa la base de datos, también puede necesitar detener (no reciclar) el grupo de aplicaciones para la aplicación mientras restaura y luego reinicia. Detener el grupo de aplicaciones elimina las conexiones http activas y no permite más, lo que de otro modo podría terminar permitiendo que se desencadenen procesos que se conectan y bloquean la base de datos. Este es un problema conocido, por ejemplo, con Umbraco Content Management System al restaurar su base de datos


Prueba esto ...

DECLARE UserCursor CURSOR LOCAL FAST_FORWARD FOR SELECT spid FROM master.dbo.sysprocesses WHERE DB_NAME(dbid) = ''dbname''--replace the dbname with your database DECLARE @spid SMALLINT DECLARE @SQLCommand VARCHAR(300) OPEN UserCursor FETCH NEXT FROM UserCursor INTO @spid WHILE @@FETCH_STATUS = 0 BEGIN SET @SQLCommand = ''KILL '' + CAST(@spid AS VARCHAR) EXECUTE(@SQLCommand) FETCH NEXT FROM UserCursor INTO @spid END CLOSE UserCursor DEALLOCATE UserCursor GO


Reiniciar el servidor SQL desconectará a los usuarios. La forma más fácil que he encontrado, también es buena si quieres desconectar el servidor.

Pero por alguna razón muy extraña, la opción ''Desconectar'' no hace esto de manera confiable y puede colgar o confundir la consola de administración. Reiniciar y luego realizar trabajos fuera de línea

Algunas veces esta es una opción, por ejemplo, detener un servidor web que es el origen de las conexiones.