Restaurar BD en SQL desde programa.

05/11/2004 - 23:18 por Luis Carlos Villanueva Gilmet | Informe spam
Un saludo a todos.

Estoy haciendo una aplicación con Windows Form que se conecta a SQL Server.
Necesito restaurar la BD desde programa y para ello utilizo el siguiente
stored procedure que he ubicado en la MASTER .


Create Procedure dbo.RestoreMiBD
@Path char
AS
RESTORE DATABASE CIJ FROM DISK = @Path WITH RECOVERY
GO


Esta opción me funciona perferctamente desde el analizador de consultas pero
cuando lo llamo desde C# ya no funciona. Me sale un error indicando que tengo
abierta la BD por lo cual no me puede restaurar una base de datos en uso.

El código en C# es:


SqlConnection MiConeccionSQL=new
SqlConnection(clGlobal.VarStringConexiónMaster);
MiConeccionSQL.Open();
SqlCommand MiComandoSQL = new SqlCommand("RestoreMiBD", MiConeccionSQL);
MiComandoSQL.CommandType = CommandType.StoredProcedure;
SqlParameter Path =new SqlParameter("@Path", SqlDbType.Char, 255);
Path.Value = this.textBoxPathRestore.Text;
MiComandoSQL.Parameters.Add(Path);
MiComandoSQL.ExecuteNonQuery();
MiConeccionSQL.Close();



Agradeceré cualquier sugerencia sobre el tema.
Luis Carlos
 

Leer las respuestas

#1 A.Poblacion
06/11/2004 - 17:59 | Informe spam
¿No será que, antes de ejecutar ese fragmento de código que has escrito, has
pasado por otra página que ha abierto una conexión a la base de datos que
intentas restaurar? Cuando la otra página abre la conexión y luego la
cierra, en realidad no se cierra sino que se devuelve al "pool" de
conexiones por si acaso se vuelve a necesitar más adelante. Por ese motivo,
la base de datos la ve como "abierta" y no te la deja restaurar. Puedes
verificarlo entrando en el Enterprise Manager, Management, Current activity,
Process Info, y ahi te encontrarás la base de datos abierta.


"Luis Carlos Villanueva Gilmet" <Luis Carlos Villanueva
wrote in message
news:
Un saludo a todos.

Estoy haciendo una aplicación con Windows Form que se conecta a SQL


Server.
Necesito restaurar la BD desde programa y para ello utilizo el siguiente
stored procedure que he ubicado en la MASTER .


Create Procedure dbo.RestoreMiBD
@Path char
AS
RESTORE DATABASE CIJ FROM DISK = @Path WITH RECOVERY
GO


Esta opción me funciona perferctamente desde el analizador de consultas


pero
cuando lo llamo desde C# ya no funciona. Me sale un error indicando que


tengo
abierta la BD por lo cual no me puede restaurar una base de datos en uso.

El código en C# es:


SqlConnection MiConeccionSQL=new
SqlConnection(clGlobal.VarStringConexiónMaster);
MiConeccionSQL.Open();
SqlCommand MiComandoSQL = new SqlCommand("RestoreMiBD", MiConeccionSQL);
MiComandoSQL.CommandType = CommandType.StoredProcedure;
SqlParameter Path =new SqlParameter("@Path", SqlDbType.Char, 255);
Path.Value = this.textBoxPathRestore.Text;
MiComandoSQL.Parameters.Add(Path);
MiComandoSQL.ExecuteNonQuery();
MiConeccionSQL.Close();



Agradeceré cualquier sugerencia sobre el tema.
Luis Carlos




Preguntas similares