对sql_server7数据库备份时,总是备份到服务器,除非将本地某文件夹设为共享,通过网络邻居进行备份,有什么方法能在不设置共享的情况下备份到本地。

解决方案 »

  1.   

    使用WINdows的计划管理功能,可以将备份出来的文件传送到任何网络上的计算机!
      

  2.   

    '备份数据库'需要添加一个commoldialog控件
    Sub backDataBase()
        cn1.Execute "use master"
        dlg.Filter = "(*.bak)|*.bak"
        dlg.ShowOpen
        MousePointer = 11
        cn1.Execute "BACKUP DATABASE hetong TO DISK = '" & dlg.FileName & "'"  '备份数据库
        MousePointer = 0
        Set cn1 = Nothing
        '重新建立连接
        Call dbint
        Set cn1 = New ADODB.Connection
        cn1.Open "Driver={SQL Server};Server=" & SQL_SRV & ";Uid=" & SA & ";Pwd=" & PA & ";Database=" & SJK & ""
    End Sub
      

  3.   

    to wingchi
    这样不行,这种方式默认备份到服务器,如果服务器有同名文件夹,则直接写入到服务器(而非本地机),如果没有,则报错。
      

  4.   

    用这个:
    If CN.State = adStateOpen Then CN.Close
        CN.ConnectionTimeout = 10
        connstr = "Driver={SQL Server};Server=" & LocalServer & ";UID=" & LocalUser & ";PWD=" & LocalPw & ";DATABASE=" & LocalDb
        CN.Open connstr
    Nowtime = Format(Now, "hh-mm-ss")
    dd = str(Date)
    riqi = dd + "-" + NowtimeSql = "BACKUP DATABASE tablename TO disk='D:\mssql7\BACKUP\tablename" & riqi & "' with noinit"
    CN.Execute (Sql)
      

  5.   

    也可以多加一个功能:
    添加进度条ProgressBar1控件  
    引用Microsoft  SQLDMO  Object  Library  
     
    '声明  
    Public  WithEvents  bkps  As  SQLDMO.Backup  
    '数据库备份操作  
    Private  Sub  Command3_Click()  
           Dim  oSvr  As  SQLDMO.SQLServer  
           Set  oSQLServer  =  CreateObject("SQLDMO.SQLServer")  
           oSQLServer.LoginSecure  =  False  
           oSQLServer.Connect  ("(local)"),  ("sa"),  ("")'连接服务器  
           Screen.MousePointer  =  11  
           Set  bkps  =  CreateObject("SQLDMO.Backup")  
           bkps.Database  =  "db"'指定需备份的数据库  
           bkps.Action  =  0  
           bkps.Files  =  "c:\backup\db.bak"'指定备份文件  
           bkps.Initialize  =  True  
           ProgressBar1.Value  =  0  
           ProgressBar1.max  =  100  
           Screen.MousePointer  =  0  
           DoEvents  
           Err  =  0  
           bkps.SQLBackup  oSQLServer  
           Screen.MousePointer  =  11  
           ProgressBar1.Value  =  100  
           DoEvents  
           Set  bkps  =  Nothing  
           Screen.MousePointer  =  0  
           MsgBox  "数据库备份完成"  
    End  Sub  
    '显示进度  
    Private  Sub  bkps_PercentComplete(ByVal  Message  As  String,  ByVal  Percent  As  Long)  
           ProgressBar1.Value  =  ProgressBar1.max  *  (Percent  /  100)  
    End  Sub
      

  6.   

    自己写的类,很简陋,不过可以参考
    Option Explicit
    '////////////////////////////////////////////////////////////////////////
    '属性
    Private mvarDBconn As Object                    '数据库连接
    Private mvarDBname As String                    '数据库名
    '////////////////////////////////////////////////////////////////////////Private ConnStr As String                       '数据库连接字串Public Function GetBakList(LogFile As String) As ObjectEnd FunctionPublic Property Let DBname(ByVal vData As String)
        mvarDBname = vData
    End PropertyPublic Property Get DBname() As String
        DBname = mvarDBname
    End PropertyPublic Property Let DBConn(ByVal vData As Object)
        mvarDBconn = vData
    End PropertyPublic Property Set DBConn(ByVal vData As Object)
        Set mvarDBconn = vData
    End PropertyPublic Property Get DBConn() As Object
    Dim DB As ADODB.Connection
    Dim TmpString1 As String
    Dim TmpString2 As String    If IsObject(mvarDBconn) Then
            Set DBConn = mvarDBconn
            Set DB = DBConn
            ConnStr = DB.ConnectionString
            TmpString1 = Mid(ConnStr, 1, InStr(ConnStr, "Catalog") + 6)
            TmpString2 = Mid(ConnStr, InStr(ConnStr, "Catalog") + 7)
            ConnStr = TmpString1 & "########" & TmpString2
        Else
            DBConn = mvarDBconn
        End If
    End PropertyPublic Function Restore(BakFilePath As String, DBConn As ADODB.Connection)
    Dim Cmd As ADODB.Command
    Dim BackName As String
    Dim tmpConnStr As StringIf ConnStr = "" Or DBname = "" Then
        MsgBox "给予参数不完整!"
        Exit Function
    End IfOn Error GoTo Ee
    DBConn.Close
    Set DBConn = New ADODB.Connection
    tmpConnStr = Replace(ConnStr, "########", "master")
    DBConn.ConnectionString = tmpConnStr
    DBConn.OpenBackName = lvw.SelectedItem.Text
    Mid(BackName, InStr(BackName, ":"), 1) = "#"
    Mid(BackName, InStr(BackName, ":"), 1) = "#"
    BackName = BackName & ".dat"
    If Dir(App.Path & "\backup\" & BackName) = "" Then
      MsgBox "该数据备份文件丢失!", 16
      Exit Function
    End IfSet Cmd = New ADODB.Command
    Cmd.ActiveConnection = Conn
    Cmd.CommandText = "RESTORE DATABASE pos FROM DISK = '" & BakFilePath & "'"
    Cmd.CommandType = adCmdText
    Cmd.ExecuteSet Cmd = NothingConn.Close
    Set Conn = New ADODB.Connection
    tmpConnStr = Replace(ConnStr, "########", DBname)
    Conn.ConnectionString = tmpConnStr
    Conn.OpenMsgBox "数据还原顺利完成!", 64
    Exit FunctionEe:
    MsgBox "数据还原出现错误!" & vbCrLf & vbCrLf & "原因有可能是应用程序还在访问数据库或者备份的数据文件已损坏!", 16
    End FunctionPublic Sub CreateBak(LogFile As String, BakPath As String, Part As String)
    Dim Cmd As ADODB.Command
    Dim SQL As StringIf Dir(BakPath, vbDirectory) = "" Then
      MkDir BakPath
    End IfOpen BakPath & "\backuplist.list" For Append As #1
    Write #1, Format(Date$, "yyyy-mm-dd") & " " & Format(Time$, "hh:mm:ss") & _
          "/" & Part
    Close #1Set Cmd = New ADODB.Command
    Cmd.ActiveConnection = Conn
    SQL = "BACKUP DATABASE ############ TO DISK='" & BakPath & "\" & _
        Format(Date$, "yyyy-mm-dd") & " " & Format(Time$, "hh#mm#ss") & ".dat" & "'"
    Cmd.CommandText = SQL
    Cmd.CommandType = adCmdText
    Cmd.ExecuteMsgBox "还原点创建完毕!", 64, "系统提示"End Sub
      

  7.   

    SQL DMO可以解决你现在的问题。试试!
      

  8.   

    "BACKUP DATABASE hetong TO DISK = 'D:\database\backup'
      

  9.   

    架设IIS服务,用ASP下载'备份数据库并提供下载的asp文件
    <%
    Response.Buffer=true
    Response.Clear'根据你的情况修改用户名和密码
    constr="Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Data Source=(local)"set conn=server.createobject("adodb.connection")
    conn.open constr
    bkfname=server.mappath("数据库备份.bak")
    sqlstr="backup database pubs to disk='"+bkfname+"' with init"
    conn.execute sqlstr
    conn.closeset fn=server.createobject("adodb.stream")
    fn.mode=3
    fn.type=1
    fn.open
    fn.LoadFromFile bkfname
    Response.ContentType="application/octet-stream"
    Response.BinaryWrite fn.read
    fn.close
    %>