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

Preguntas similare

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




Respuesta Responder a este mensaje
#2 Luis Carlos Villanueva Gilmet
09/11/2004 - 00:04 | Informe spam
Efectivamente. Abro la conexión de la BD en en WinForm para la autenticación
del usuario y luego, al verificar los datos, cierro la conexión y hago
dispose del objeto conexión, automaticamente después intentaba hacer el
restore.

Voy a probar con llamar al garbage colector para que la conexión
efectivamente esté cerrada.

Un abrazo y gracias por las ideas.

Saludos,
Luis Carlos





siy luego llamo a otro form

"A.Poblacion" wrote:

¿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
>
>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida