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:
Mostrar la cita
#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
#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:
Mostrar la cita
#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:
Mostrar la cita
&
Mostrar la cita
"MiBase_Data"))
Mostrar la cita
#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%
Mostrar la cita
Ads by Google
Search Busqueda sugerida