Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

problema con restore

Estas en el tema de problema con restore en el foro de SQL Server en Foros del Web. lo que me pasa es algo raro. uso el visual studio 2005 con el sql express integrado. desde la base de datos "D:\Prueba\APP_DATA\DATOS.MDF" pq ese ...
  #1 (permalink)  
Antiguo 17/12/2007, 07:33
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 3 meses
Puntos: 0
problema con restore

lo que me pasa es algo raro. uso el visual studio 2005 con el sql express integrado.

desde la base de datos "D:\Prueba\APP_DATA\DATOS.MDF" pq ese es el nombre que me pone en propiedades de la BD, hago

backup database [D:\Prueba\APP_DATA\DATOS.MDF] to disk='D:\Prueba\Backup\CopiaSeguridad.bak' WITH INIT

desde la BD master hago

restore database [D:\Prueba\App_Data\Datos.mdf] from disk='D:\Prueba\Backup\CopiaSeguridad.bak'
with replace


funciona a veces, si arranco el visual studio y no entro en la BD "D:\Prueba\APP_DATA\DATOS.MDF" si que funciona, pero como entre en ella me da el error

El sistema operativo devolvió el error '32(El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.)' al intentar RestoreContainer::ValidateTargetForCreation' en 'D:\Prueba\APP_DATA\Datos.mdf'. El archivo 'Datos' no se puede restaurar en 'D:\Prueba\APP_DATA\Datos.mdf'. Utilice WITH MOVE para identificar una ubicación válida para el archivo. El sistema operativo devolvió el error '32(El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.)' al intentar RestoreContainer::ValidateTargetForCreation' en 'D:\Prueba\APP_DATA\Datos_log.ldf'. El archivo 'Datos_log' no se puede restaurar en 'D:\Prueba\APP_DATA\Datos_log.ldf'. Utilice WITH MOVE para identificar una ubicación válida para el archivo. Se identificaron problemas al planear la instrucción RESTORE. Los mensajes anteriores proporcionan detalles. Fin anómalo de RESTORE DATABASE.


como puedo cerrar todas las conexiones que pudiera haber? si espero unos minutos desde la ultima consulta a la BD tb funciona el restore, debe ser eso que se keda la conexion pillada

Última edición por juancete; 17/12/2007 a las 10:50
  #2 (permalink)  
Antiguo 17/12/2007, 13:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: problema con restore

No puedes hacer un RESTORE de una base de datos que esta en uso, para sacar a todos tus usuarios de forma automatica.

ALTER DATABASE tubase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
  #3 (permalink)  
Antiguo 18/12/2007, 03:07
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: problema con restore

solucione el tema de las conexiones abiertas poniendo pooling=false, el problema que tengo ahora es que si hago restore una vez funciona todo, pero como haga otro restore inmediatamente me da este error:

No se puede abrir la base de datos predeterminada del usuario. Error de inicio de sesión.

lo mas raro es que si vuelvo a hacer un restore pues vuelve a funcionar, y si hago otro vuelve a fallar, asi en un bucle

el conectionstring para conectarme a la BD D:\Prueba\APP_DATA\DATOS.MDF y hacer el backup es

Data Source=.\SQLEXPRESS;pooling=false;AttachDbFilename =|DataDirectory|\Datos.mdf;Integrated Security=True;User Instance=True

el conectionstring para conectarme a la BD master y hacer el restore es

Data Source=PC\SQLEXPRESS;Initial Catalog=master;Integrated Security=True

alguna idea?

Cita:
Iniciado por iislas Ver Mensaje
No puedes hacer un RESTORE de una base de datos que esta en uso, para sacar a todos tus usuarios de forma automatica.

ALTER DATABASE tubase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
si ejecuto eso desde la BD master antes de hacer el restore y sin usar pooling=false sigue dandome el error:

El sistema operativo devolvió el error '32(El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.)' al intentar RestoreContainer::ValidateTargetForCreation' en 'D:\Prueba\APP_DATA\Datos.mdf'. El archivo 'Datos' no se puede restaurar en 'D:\Prueba\APP_DATA\Datos.mdf'. Utilice WITH MOVE para identificar una ubicación válida para el archivo. El sistema operativo devolvió el error '32(El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.)' al intentar RestoreContainer::ValidateTargetForCreation' en 'D:\Prueba\APP_DATA\Datos_log.ldf'. El archivo 'Datos_log' no se puede restaurar en 'D:\Prueba\APP_DATA\Datos_log.ldf'. Utilice WITH MOVE para identificar una ubicación válida para el archivo. Se identificaron problemas al planear la instrucción RESTORE. Los mensajes anteriores proporcionan detalles. Fin anómalo de RESTORE DATABASE.



EDITO: no respondais a este post ya que instale el sql server express y ya no tengo estos errores, por eso abro uno nuevo. Saludos ;)

Última edición por juancete; 19/12/2007 a las 03:37
  #4 (permalink)  
Antiguo 02/01/2008, 12:28
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 1 mes
Puntos: 25
Re: problema con restore

El nombre de la DB debe ser el nombre lógico, no el físico del MDF. Por ejemplo suponiendo que el nombre de tu DB es Datos:

backup database Datos
to disk='D:\Prueba\Backup\CopiaSeguridad.bak'
WITH INIT

restore database Datos
from disk='D:\Prueba\Backup\CopiaSeguridad.bak'
with replace
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 02/01/2008, 15:22
 
Fecha de Ingreso: febrero-2007
Mensajes: 69
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: problema con restore

el nombre logico que aparece en propiedades de la BD es el fisico, por eso lo puse entre [ ]

por todas las cosas raras que me pasaban con el sql server integrado en visual studio 2005 instale el sql server standard y ahora no me dan esos errores como comente en otro post

saludos ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.