Hola Sonia, yo utilizo el restore de SQLDMO, y me funciona perfecto, aquí te
envió un ejemplo
Private Sub BotonRestore_Click()
Dim oRestore As New SQLDMO.Restore
Dim sRuta As String
sRuta = App.Path + "\BK_" + BaseDeDatosSQL
If MsgBox("Restaurar sistema desde " + sRuta + vbCrLf + "a la base " +
BaseDeDatosSQL, vbQuestion + vbYesNo + vbDefaultButton2, "Restaurar copia de
seguridad") = vbYes Then
BotonSalir.Enabled = False
BotonRestore.Enabled = False
BotonBackup.Enabled = False
Screen.MousePointer = 11
oRestore.Database = ServidorSQL
oRestore.Files = sRuta
oRestore.SQLRestore goSQLServer
Screen.MousePointer = 0
BotonSalir.Enabled = True
BotonRestore.Enabled = True
BotonBackup.Enabled = True
MsgBox "Base de datos restaurada con éxito"
End If
End Sub
Atte, José Luis Agosta
_____
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Sonia Perez Peña
Enviado el: Viernes, 12 de Enero de 2007 10:06
Para: vbusers List Member
Asunto: [vbusers] Sobre conexion de VBasic y SQL
Calvin, el problema es el siguiente, mira tengo que implementar el restore de
una base de dato, entonces cuando entro a la aplicación, tengo que conectarme
por primera vez, luego la cierro y la pongo nothing y close, pero es que cuando
voy hacer restore conectada a Master por el codigo que ya envie, no obstante te
lo envio me dice que tengo conexiones abierta, sin embargo las puedo tumbar con
el kill de SQL y entonces si puedo hacer el restore observa
En fin lo que quisiera es no utilizar el kill para tumbar nada
Nota: aquí va lo quiero hacer, si pueden ayudarme en algo mejor lo aceptaria
Set Dbs = Nothing
frm_Main.CrystalReport1.Reset
cnnLocal.Open coneccion_ado_master
etiqueta:
Screen.MousePointer = vbHourglass
error_var = "Restaura"
SQL = "SELECT sysprocesses.spid " & _
" FROM sysprocesses INNER JOIN sysdatabases ON sysprocesses.dbid =
sysdatabases.dbid " & _
" WHERE hostname='" & Environ("COMPUTERNAME") & "'" & " and
(sysdatabases.name = '" + basedatos + "') order by sysprocesses.spid"
If rsAdo.State = adStateOpen Then rsAdo.Close
rsAdo.Open SQL, coneccion_ado_master
While Not rsAdo.EOF
SQL = "Kill " & rsAdo("spid")
cnnLocal.Execute SQL
rsAdo.MoveNext
Wend
Rado = cnnLocal.Execute("sp_helpserver")
If Trim(Rado(1)) <> Environ("COMPUTERNAME") Then
camino = "\\" + Environ("COMPUTERNAME") + "\" + Nombre_Dir
Else
camino = strPath_MDB
End If
'cnnLocal.Execute "RESTORE DATABASE " + basedatos + " from DISK ='"
& camino & "'" & _
" WITH MOVE '" & fbd & "' TO '" & cbd & "', Move '" & flo & "' TO '"
& clog & "', REPLACE "
cnnLocal.Execute "RESTORE DATABASE " + basedatos + " from DISK ='" &
camino & "'"
MsgBox "Restaura realizada satisfactoriamente. El programa abortará,
vuelva a entrar", , TMsg
Screen.MousePointer = vbDefault
End
_____
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Daniel Calvin
Enviado el: Jueves, 11 de Enero de 2007 05:28 p.m.
Para: vbusers List Member
Asunto: [vbusers] Sobre conexion de VBasic y SQL
Hola Sonia
En que lugar te da error? cuandop queres hecer que?
Estas segura que no tenes abierta mas de una coneccion?
>>> para ello debo tumbar las conexiones en el servidor
Esa no es la forma en que se debe manejar las conexiones en ADO.
Podes mandar tu string de conexion?, asi s ete puede decir si o se activo el
connection pool.
Es un mecanismo de ADO que no cierra las conexiones cuando haces un close, se
encarga de mantenerlas para reutilizarlas.
Eso puede ser uno de los motivos.
El otro motivo es que tengas mas de una conexion ADO activa y solo estes
cerrando una.
Cual es el error que mencionas?, cuando haces que operación se dispara el error?
Manejo ADO hace mucho tiempo, desde que estab en beta, alla 1995, tengo incluso
un framework para simplificar el manejo de ADO, te puedo asegurar que no te
debería estar pasando lo que contas.
Podes mandar un poco de código?
Daniel Calvin
El día 11/01/07, Sonia Perez Peña <HYPERLINK "mailto:[EMAIL PROTECTED]"[EMAIL
PROTECTED]> escribió:
Mira Sebastian te cuento, el problema es que yo uso VBasic 6.0 con SQLserver,
entonce estoy implementando la Restaura dentro del Modulo, para ello debo
tumbar las conexiones en el servidor, hice lo siguiente
SQL = "SELECT sysprocesses.spid " & _
" FROM sysprocesses INNER JOIN sysdatabases ON sysprocesses.dbid =
sysdatabases.dbid " & _
" WHERE hostname='" & Environ("COMPUTERNAME") & "'" & " and (
HYPERLINK "http://sysdatabases.name/" \nsysdatabases.name = '" + basedatos +
"') "
If rsAdo.State = adStateOpen Then rsAdo.Close
rsAdo.Open SQL, conect_Ado_master
If Not rsAdo.EOF Then
While Not rsAdo.EOF
SQL = "Kill " & rsAdo("spid")
cnnLocal.Execute SQL
rsAdo.MoveNext
Wend
End If
Es decir tumbo estas conexiones porque si no me da error a pesar de que le doy
close y nothing
_____
De: HYPERLINK "mailto:[email protected]" [EMAIL PROTECTED] [mailto:HYPERLINK
"mailto:[email protected]" [EMAIL PROTECTED] En nombre de Sebastian Ariel
Gambolati
Enviado el: Jueves, 11 de Enero de 2007 01:34 p.m.
Para: vbusers List Member
Asunto: [vbusers] Sobre conexion de VBasic y SQL
Esta bien lo que vos decis, pero seguramente en el "Destructor" de la clase
Conection, hay una llamada al cierre de conexiones. Sino, en todas mis
aplicaciones vivirian las conexiones abiertas hasta que el SQL Server se digne
a cerrarlas. Que dicho sea de paso, no le confio eso al SQL Server.
Daniel Calvin <HYPERLINK "mailto:[EMAIL PROTECTED]" [EMAIL PROTECTED] >
escribió:
Perdón hay un error de concepto:
Set Conexion = Nothing Libera la referencia a la conexión para que el runtime
de vb pueda liberar la referencia al objeto.
Lo correcto es hacer:
Conexion.Close
Y cuando ya no se utilice el objeto Conexion, si hacer:
Set Conexion = Nothing
Daniel Calvin
El día 11/01/07, Sebastian Ariel Gambolati <HYPERLINK "mailto:[EMAIL
PROTECTED]" \n [EMAIL PROTECTED]> escribió:
El Set Conexion = Nothing, deberia cerrarte la conexion (como cualquier recurso
que estes usando). Pero por si las dudas, podes hacer: Conexion.Close
Sonia Perez Peńa <HYPERLINK "mailto:[EMAIL PROTECTED]" [EMAIL PROTECTED] >
escribió:
Hola he detectado que a pesar de poner a Nothing la conexión queda dormida por
un espacio en el servidor, ?alquien pidia decirme como resolver esto
Sebastian Gambolati
_____
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
HYPERLINK "http://ar.answers.yahoo.com/" \nProbalo ya!
--
Daniel A. Calvin
Cooperator Team Member
HYPERLINK "http://www.cooperator.com.ar/" \nhttp://www.cooperator.com.ar
Microsoft Certified Professional
Sebastian Gambolati
_____
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
HYPERLINK "http://ar.answers.yahoo.com/" \nProbalo ya!
--
Daniel A. Calvin
Cooperator Team Member
HYPERLINK "http://www.cooperator.com.ar"http://www.cooperator.com.ar
Microsoft Certified Professional
--
S.J.L. Soft Computación, utiliza software original.
Se certificó que el correo Entrante no contiene virus.
Verificado por AVG.
Versión: 7.5.433 / Base de datos de virus: 268.16.10/624 - Fecha de la versión:
12/01/2007 14:04
--
S.J.L. Soft Computación, utiliza software original.
Se certificó que el correo Saliente no contiene virus.
Verificado por AVG.
Versión: 7.5.433 / Base de datos de virus: 268.16.10/624 - Fecha de la versión:
12/01/2007 14:04