Ejecutar SQL sin abrir conexion

18/07/2005 - 14:05 por Baldor | Informe spam
¿Como hago para ejecutar un sql del tipo RESTORE DATABASE para que no me
diga que la BD está en uso?

Preguntas similare

Leer las respuestas

#1 Maxi
18/07/2005 - 14:12 | Informe spam
Hola, es simple, no debes estar parado sobre la base ni deben existir
usuarios sobre la misma. Por ej podrias ejecutarlo usando la base master,
pero como te mencione antes, no debes tener ningun usuario.


Salu2
Maxi


"Baldor" escribió en el mensaje
news:
¿Como hago para ejecutar un sql del tipo RESTORE DATABASE para que no me
diga que la BD está en uso?



Respuesta Responder a este mensaje
#2 Baldor
18/07/2005 - 14:27 | Informe spam
Lo intento hacer usando la BD master, pero me dice que no puede obtener
acceso exclusivo porque la BD esta en uso.
Utilizo la siguiente funcion:

Try
Dim cnMaster As New SqlConnection("packet ;user id=sa;pwd=" &
PasswordBD & ";data source=" & ServidorSQL & ";persist security
info=False;initial catalog=master")
Dim command As New SqlCommand
cnMaster.Open()
command.Connection = cnMaster
command.CommandType = CommandType.StoredProcedure
command.CommandText = "restoreBDPW"
command.Parameters.Add(New SqlParameter("@nombreBD", NombreBD))
command.Parameters.Add(New SqlParameter("@rutaFicheroBakEnServidor",
FicheroBAK))
command.Parameters.Add(New SqlParameter("@mediaPassword", NombreBD))
command.Parameters.Add(New SqlParameter("@DatosLogico", "MiBase_Data"))
command.Parameters.Add(New SqlParameter("@DatosFisico",
RutaSQLServerData & "\" & NombreBD & ".mdf"))
command.Parameters.Add(New SqlParameter("@TransaccionesLogico",
"MiBaseo_Log"))
command.Parameters.Add(New SqlParameter("@TransaccionesFisico",
RutaSQLServerData & "\" & NombreBD & "_log.ldf"))
command.ExecuteNonQuery()
command.Dispose()
command = Nothing
cnMaster.Close()
cnMaster.Dispose()
cnMaster = Nothing
Return 0
Catch ex As Exception
MsgBox(ex.Message)
Return -1
End Try


y el Stored Procedure es este:


CREATE PROCEDURE RestoreBDPw
@nombreBD varchar(30),
@rutaFicheroBakEnServidor varchar(250),
@mediaPassword varchar(30),
@DatosLogico varchar(50),
@DatosFisico varchar(250),
@TransaccionesLogico varchar(50),
@TransaccionesFisico varchar(250)

AS
RESTORE DATABASE @nombreBD FROM DISK= @rutaFicheroBakEnServidor WITH
MEDIAPASSWORD=@mediaPassword,
MOVE @DatosLogico TO @DatosFisico,
MOVE @TransaccionesLogico TO @TransaccionesFisico
GO
Respuesta Responder a este mensaje
#3 Maxi
18/07/2005 - 14:37 | Informe spam
Hola, entonces hay otros usuarios conectados, si no los desconectas no
podras hacer la operacion


Salu2
Maxi


"Baldor" escribió en el mensaje
news:
Lo intento hacer usando la BD master, pero me dice que no puede obtener
acceso exclusivo porque la BD esta en uso.
Utilizo la siguiente funcion:

Try
Dim cnMaster As New SqlConnection("packet ;user id=sa;pwd=" &
PasswordBD & ";data source=" & ServidorSQL & ";persist security
info=False;initial catalog=master")
Dim command As New SqlCommand
cnMaster.Open()
command.Connection = cnMaster
command.CommandType = CommandType.StoredProcedure
command.CommandText = "restoreBDPW"
command.Parameters.Add(New SqlParameter("@nombreBD", NombreBD))
command.Parameters.Add(New SqlParameter("@rutaFicheroBakEnServidor",
FicheroBAK))
command.Parameters.Add(New SqlParameter("@mediaPassword", NombreBD))
command.Parameters.Add(New SqlParameter("@DatosLogico", "MiBase_Data"))
command.Parameters.Add(New SqlParameter("@DatosFisico",
RutaSQLServerData & "\" & NombreBD & ".mdf"))
command.Parameters.Add(New SqlParameter("@TransaccionesLogico",
"MiBaseo_Log"))
command.Parameters.Add(New SqlParameter("@TransaccionesFisico",
RutaSQLServerData & "\" & NombreBD & "_log.ldf"))
command.ExecuteNonQuery()
command.Dispose()
command = Nothing
cnMaster.Close()
cnMaster.Dispose()
cnMaster = Nothing
Return 0
Catch ex As Exception
MsgBox(ex.Message)
Return -1
End Try


y el Stored Procedure es este:


CREATE PROCEDURE RestoreBDPw
@nombreBD varchar(30),
@rutaFicheroBakEnServidor varchar(250),
@mediaPassword varchar(30),
@DatosLogico varchar(50),
@DatosFisico varchar(250),
@TransaccionesLogico varchar(50),
@TransaccionesFisico varchar(250)

AS
RESTORE DATABASE @nombreBD FROM DISK= @rutaFicheroBakEnServidor WITH
MEDIAPASSWORD=@mediaPassword,
MOVE @DatosLogico TO @DatosFisico,
MOVE @TransaccionesLogico TO @TransaccionesFisico
GO




Respuesta Responder a este mensaje
#4 Baldor Renwald
19/07/2005 - 00:26 | Informe spam
No, no es eso, porque solo yo uso el servidor de BD. Y ya he comprobado que
no hay ningun proceso usando la BD en cuestión. Por eso puse el código,
porque algo debería haber mal por ahí.



"Maxi" escribió en el mensaje
news:
Hola, entonces hay otros usuarios conectados, si no los desconectas no
podras hacer la operacion


Salu2
Maxi


"Baldor" escribió en el mensaje
news:
> Lo intento hacer usando la BD master, pero me dice que no puede obtener
> acceso exclusivo porque la BD esta en uso.
> Utilizo la siguiente funcion:
>
> Try
> Dim cnMaster As New SqlConnection("packet ;user id=sa;pwd="


&
> PasswordBD & ";data source=" & ServidorSQL & ";persist security
> info=False;initial catalog=master")
> Dim command As New SqlCommand
> cnMaster.Open()
> command.Connection = cnMaster
> command.CommandType = CommandType.StoredProcedure
> command.CommandText = "restoreBDPW"
> command.Parameters.Add(New SqlParameter("@nombreBD", NombreBD))
> command.Parameters.Add(New SqlParameter("@rutaFicheroBakEnServidor",
> FicheroBAK))
> command.Parameters.Add(New SqlParameter("@mediaPassword", NombreBD))
> command.Parameters.Add(New SqlParameter("@DatosLogico",


"MiBase_Data"))
> command.Parameters.Add(New SqlParameter("@DatosFisico",
> RutaSQLServerData & "\" & NombreBD & ".mdf"))
> command.Parameters.Add(New SqlParameter("@TransaccionesLogico",
> "MiBaseo_Log"))
> command.Parameters.Add(New SqlParameter("@TransaccionesFisico",
> RutaSQLServerData & "\" & NombreBD & "_log.ldf"))
> command.ExecuteNonQuery()
> command.Dispose()
> command = Nothing
> cnMaster.Close()
> cnMaster.Dispose()
> cnMaster = Nothing
> Return 0
> Catch ex As Exception
> MsgBox(ex.Message)
> Return -1
> End Try
>
>
> y el Stored Procedure es este:
>
>
> CREATE PROCEDURE RestoreBDPw
> @nombreBD varchar(30),
> @rutaFicheroBakEnServidor varchar(250),
> @mediaPassword varchar(30),
> @DatosLogico varchar(50),
> @DatosFisico varchar(250),
> @TransaccionesLogico varchar(50),
> @TransaccionesFisico varchar(250)
>
> AS
> RESTORE DATABASE @nombreBD FROM DISK= @rutaFicheroBakEnServidor WITH
> MEDIAPASSWORD=@mediaPassword,
> MOVE @DatosLogico TO @DatosFisico,
> MOVE @TransaccionesLogico TO @TransaccionesFisico
> GO
>
>
>
>


Respuesta Responder a este mensaje
#5 Maxi
19/07/2005 - 14:05 | Informe spam
Hola, revisalo bien, si hay algo conectado no podes hacer un restore, o sos
vos el q te estas conectando de alguna manera o es algun otro proceso.
Podrias pasarme la cadena de conexion q estas usando?


Salu2
Maxi


"Baldor Renwald" escribió en el mensaje
news:OiFNXg%
No, no es eso, porque solo yo uso el servidor de BD. Y ya he comprobado
que
no hay ningun proceso usando la BD en cuestión. Por eso puse el código,
porque algo debería haber mal por ahí.



"Maxi" escribió en el mensaje
news:
Hola, entonces hay otros usuarios conectados, si no los desconectas no
podras hacer la operacion


Salu2
Maxi


"Baldor" escribió en el mensaje
news:
> Lo intento hacer usando la BD master, pero me dice que no puede obtener
> acceso exclusivo porque la BD esta en uso.
> Utilizo la siguiente funcion:
>
> Try
> Dim cnMaster As New SqlConnection("packet ;user id=sa;pwd="


&
> PasswordBD & ";data source=" & ServidorSQL & ";persist security
> info=False;initial catalog=master")
> Dim command As New SqlCommand
> cnMaster.Open()
> command.Connection = cnMaster
> command.CommandType = CommandType.StoredProcedure
> command.CommandText = "restoreBDPW"
> command.Parameters.Add(New SqlParameter("@nombreBD", NombreBD))
> command.Parameters.Add(New SqlParameter("@rutaFicheroBakEnServidor",
> FicheroBAK))
> command.Parameters.Add(New SqlParameter("@mediaPassword", NombreBD))
> command.Parameters.Add(New SqlParameter("@DatosLogico",


"MiBase_Data"))
> command.Parameters.Add(New SqlParameter("@DatosFisico",
> RutaSQLServerData & "\" & NombreBD & ".mdf"))
> command.Parameters.Add(New SqlParameter("@TransaccionesLogico",
> "MiBaseo_Log"))
> command.Parameters.Add(New SqlParameter("@TransaccionesFisico",
> RutaSQLServerData & "\" & NombreBD & "_log.ldf"))
> command.ExecuteNonQuery()
> command.Dispose()
> command = Nothing
> cnMaster.Close()
> cnMaster.Dispose()
> cnMaster = Nothing
> Return 0
> Catch ex As Exception
> MsgBox(ex.Message)
> Return -1
> End Try
>
>
> y el Stored Procedure es este:
>
>
> CREATE PROCEDURE RestoreBDPw
> @nombreBD varchar(30),
> @rutaFicheroBakEnServidor varchar(250),
> @mediaPassword varchar(30),
> @DatosLogico varchar(50),
> @DatosFisico varchar(250),
> @TransaccionesLogico varchar(50),
> @TransaccionesFisico varchar(250)
>
> AS
> RESTORE DATABASE @nombreBD FROM DISK= @rutaFicheroBakEnServidor WITH
> MEDIAPASSWORD=@mediaPassword,
> MOVE @DatosLogico TO @DatosFisico,
> MOVE @TransaccionesLogico TO @TransaccionesFisico
> GO
>
>
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida