Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Thumbs down Error con Restore

Hola familia delphinos:

Estoy desarrollando una aplicación en Delphi7 y SQL Server 2000.
Con este codigo intento restaurar la base de datos.

Código Delphi [-]
procedure TPrincipalForm.RestaurarBD1Click(Sender: TObject);
var
 Camino : String;
begin
 Camino := 'c:\SalvaSAF';
 try
  QrySalvRest.SQL.Clear;
  QrySalvRest.SQL.Add('Restore database SAF');
  QrySalvRest.SQL.Add('from disk = '+ QuotedStr(Camino));
  QrySalvRest.SQL.Add('With Replace');
  QrySalvRest.ExecSQL;
  Application.MessageBox('La restaura terminó satisfactoriamente.','Salvar BD', MB_ICONINFORMATION);
 except
  Application.MessageBox('No se pudo restaurar la base de datos.','Salvar BD', MB_ICONERROR);
 end;
end;

Este es el error que me lanza:

Cita:
Exclusive access could not be obtained because the database is in use
Responder Con Cita
  #2  
Antiguo 29-08-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Está claro, ¿verdad?, estás restaurando una BD en uso, tendrá que desconectar todo el mundo
Responder Con Cita
  #3  
Antiguo 29-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Desconectar ???

Me podrian explicar ¿cómo desconectar a todo el mundo?

Salu2,
Y grasias de antemano.
Responder Con Cita
  #4  
Antiguo 29-08-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
No tengo ni idea de cómo se hace en MS SQL
Aunque debes tener cuidado de no sobreescribir la BD actual, haz una copia de la misma antes de restaurar.
Responder Con Cita
  #5  
Antiguo 29-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Thumbs down ¿cómo desconectar a todo el mundo?

Intente con
Código Delphi [-]
DM.Connect.Connected := False;
pero sigue saliendo el mismo error.
Responder Con Cita
  #6  
Antiguo 29-08-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 21
luisgutierrezb Va por buen camino
yo te recomiendo que pongas la base de datos en modo "single",
EXEC sp_dboption 'Works', 'single user', 'true'
EXEC sp_dboption 'Works', 'single user', 'false'

Works seria la base de datos, y el verdadero o falso es para ponerlo o quitarlo...

restauras el respaldo y la vuelves a poner multiusuario....

mas informacion...

http://www.kodyaz.com/articles/alter...user-mode.aspx
Responder Con Cita
  #7  
Antiguo 29-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Cita:
Empezado por luisgutierrezb Ver Mensaje
yo te recomiendo que pongas la base de datos en modo "single",
EXEC sp_dboption 'Works', 'single user', 'true'
EXEC sp_dboption 'Works', 'single user', 'false'

Works seria la base de datos, y el verdadero o falso es para ponerlo o quitarlo...

restauras el respaldo y la vuelves a poner multiusuario....

mas informacion...

http://www.kodyaz.com/articles/alter...user-mode.aspx
Intente hacer lo que me dijo pero ... no me deja, ahí le muestro el error:

Database state cannot be changed while other users are using the database SAF

En espera de su ayuda
Mil grasias de entemano

Última edición por Ledian_Fdez fecha: 29-08-2011 a las 17:44:21.
Responder Con Cita
  #8  
Antiguo 29-08-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 21
luisgutierrezb Va por buen camino
es que hay otros usuarios usando la base de datos, no puedes restaurar algo en donde otros están trabajando...
Responder Con Cita
  #9  
Antiguo 29-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Es cierto, pero ...¿Como restaurar?

Salu2.
Responder Con Cita
  #10  
Antiguo 29-08-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 21
luisgutierrezb Va por buen camino
a lo mejor se podria encontrar una instruccion para tumbar procesos del mssql, y tumbar todo, y poder restaurar, eso si, si tumbas procesos podria haber cambios inesperados, creo yo...
Responder Con Cita
  #11  
Antiguo 29-08-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 21
luisgutierrezb Va por buen camino
esta página habla de los procesos en MSSQL con codigo T-SQL

http://www.kodyaz.com/articles/kill-...-database.aspx
Responder Con Cita
  #12  
Antiguo 30-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Post Aun no logro restaurar !!!

Hola amigos, les cuento que he intentado con todo lo que han expuesto acá en este foro y aun no logro Restaurar la base de datos desde la aplicación.

Tratare de exponer con más claridad lo que me sucede.

Estoy haciendo un sistema en delphi7 y uso como gestor de base de datos SQL-Server 2000

En el DM (TDataModule) tengo un Connection (TADOConnection) donde en el connection string establezco la cadena de conexión.

En el QrySalvRest (TADOQuery) como pueden observar le paso por código la cadena SQL y luego lo ejecuto.

Código Delphi [-]
procedure TPrincipalForm.RestaurarBD1Click(Sender: TObject);
var
 Camino : String;
begin
 Camino := 'c:\SalvaSAF';
 try
  QrySalvRest.SQL.Clear;
  QrySalvRest.SQL.Add('Restore database SAF');
  QrySalvRest.SQL.Add('from disk = '+ QuotedStr(Camino));
  QrySalvRest.SQL.Add('With Replace');
  QrySalvRest.ExecSQL;
  Application.MessageBox('La restaura terminó satisfactoriamente.','Salvar BD', MB_ICONINFORMATION);
 except
  Application.MessageBox('No se pudo restaurar la base de datos.','Salvar BD', MB_ICONERROR);
 end;
end;

Me lanza el siguiente error:

Exclusive access could not be obtained because the database is in use

nota: Yo soy el único usuario que esta trabajando con la base de datos ya que el Query con el que intento restaurar tiene establecido en el conection string el Connection (TADOConnection).

La verdad que no se que hacer, y mi cliente no quiere depender del informático para realizar la restaura, el quiere que la aplicación le de esa facilidad.

De antemano no se como agradecerles la ayuda que ya me han brindado.
Responder Con Cita
  #13  
Antiguo 31-08-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 21
Ledian_Fdez Va por buen camino
Thumbs up Problema resuelto!!!

Al fin !!! problema resuelto, es que en el connection string tenia asociada la base de datos.

muchas grasias a todos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Restore de Firebird 2.1 Classic >>>Error sierraja Firebird e Interbase 2 27-08-2010 16:34:34
Restore Dump y error "Has gone Away" lucasarts_18 MySQL 0 02-04-2008 06:29:45
Error al realizar RESTORE? mguixot Firebird e Interbase 3 08-11-2005 15:02:03
Error al hacer Backup / Restore!!! CarlosHernandez Firebird e Interbase 7 17-09-2005 00:03:35
Error en restore fichero interbase EL WINDSURFISTA Firebird e Interbase 2 17-11-2003 14:49:51


La franja horaria es GMT +2. Ahora son las 23:34:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi