De hecho, estoy tratando de hacer un script (en Sql Server 2008) para restaurar una base de datos desde un archivo de respaldo. Hice el siguiente código y recibo un error:
Msg 3101, Level 16, State 1, Line 3
Exclusive access could not be obtained because
the database is in use.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.
¿Cómo soluciono este problema?
IF DB_ID('AdventureWorksDW') IS NOT NULL
BEGIN
RESTORE DATABASE [AdventureWorksDW]
FILE = N'AdventureWorksDW_Data'
FROM
DISK = N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\Backup\AdventureWorksDW.bak'
WITH FILE = 1,
MOVE N'AdventureWorksDW_Data'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW.mdf',
MOVE N'AdventureWorksDW_Log'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW_0.LDF',
NOUNLOAD, STATS = 10
END
sql
sql-server
sql-server-2008
Vapor
fuente
fuente
Respuestas:
Asumiré que si está restaurando una base de datos, no le importan las transacciones existentes en esa base de datos. ¿Correcto? Si es así, esto debería funcionar para usted:
Ahora, un elemento adicional a tener en cuenta. Después de configurar la base de datos en modo de usuario único, otra persona puede intentar conectarse a la base de datos. Si tienen éxito, no podrá continuar con la restauración. ¡Es una carrera! Mi sugerencia es ejecutar las tres declaraciones a la vez.
fuente
USE master
, noUSER master
.ALTER DATABASE [AdventureWorksDW] SET MULTI_USER
al final para asegurarse de que la base de datos vuelva al modo multiusuario normal.SINGLE_USER
modo en el momento de la copia de seguridad, estará enSINGLE_USER
modo cuando se restaure la copia de seguridad. Si estaba enMULTI_USER
modo en el momento de la copia de seguridad, estará enMULTI_USER
modo cuando se restaure. Tiene un gran punto: definitivamente vale la pena verificarlo una vez finalizada la restauración. También puede ejecutar RESTORE HEADERONLY en el medio de respaldo y verificarIsSingleUser
o hacer cálculos matemáticos bit a bit en laFlags
columna.fuente
ejecute esta consulta antes de restaurar la base de datos:
y este después de restaurar:
fuente
Para mi la solución es:
Marque Sobrescribir la base de datos existente (CON REEMPLAZAR) en la pestaña de opciones en el lado izquierdo.
Desmarque todas las demás opciones.
Seleccione la base de datos de origen y destino.
Haga clic en Aceptar.
Eso es.
fuente
Utilice el siguiente script para buscar y eliminar todas las conexiones abiertas a la base de datos antes de restaurar la base de datos.
Espero que esto ayude ...
fuente
Creo que solo necesita configurar la base de datos en modo de usuario único antes de intentar restaurar, como se muestra a continuación, solo asegúrese de estar usando
master
fuente
Acabo de reiniciar el servicio sqlexpress y luego la restauración se completó bien
fuente
fuente
Solución 1: reinicie los servicios SQL e intente restaurar la base de datos Solución 2: reinicie el sistema / servidor e intente restaurar la base de datos Solución 3: recupere la base de datos actual, elimine la base de datos actual / de destino e intente restaurar la base de datos.
fuente
Configurar la base de datos en modo de usuario único no funcionó para mí, pero desconectarlo y luego volverlo a conectar sí funcionó. Está en el menú contextual de la base de datos, en Tareas.
Asegúrese de marcar la opción 'Eliminar todas las conexiones activas' en el cuadro de diálogo.
fuente
He aquí una forma en que estoy restaurando la base de datos desde la producción hasta el desarrollo:
NOTA: Lo estoy haciendo a través del trabajo SSAS para impulsar la base de datos de producción al desarrollo a diario:
Paso 1: eliminar la copia de seguridad del día anterior en desarrollo:
Paso 2: copiar la base de datos de producción al desarrollo:
Paso 3: Restaurar ejecutando .sql script
Código que se encuentra dentro del archivo AE11_Restore.sql:
fuente
Recibí este error cuando no había suficiente espacio en disco para restaurar Db. Limpiar algo de espacio lo solucionó.
fuente
llevar la base de datos original a fuera de línea funcionó para mí
fuente