我現在在客戶端備份服務器(xfp)上的數據庫(bl),以前我總是手工用sql的備份功能把數據庫備份在服務器上的e:\bak\bakdata(共享,客戶端對此目錄有讀寫功能)目錄下,
現在我(客戶端)想用程序備份數據庫(xx.bak) 到e:\bak\bakdata下出現'cannot open back device " \\xfp\bak\bakdata\xx.bak" .device error or device off-line.see the sql server error log for more details'錯誤,更奇怪的是如果我(客戶端)把數據庫備份在本機上的e:\,它竟然把數據庫備份到了服務器的e:\,
請問怎樣解決這個問題(怎樣才能把數據庫備份在服務器上的e:\bak\bakdata目錄下)
我把我的代碼摘錄如下,希望哪位大俠斧正
If MPB_ADOCN.State = adStateOpen Then MPB_ADOCN.Close
   MPB_ADOCN.CommandTimeout = 300
   MPB_ADOCN.ConnectionTimeout = 300
Dim sql As String
'Me.MousePointer = 11
With CommonDialog1
   On Error GoTo trip:
        .CancelError = True
       .Filter = "(*.bak)|*.bak|All File|*.*"
       .ShowOpen
End With
sql = "backup database db_mis to disk='" & CommonDialog1.FileName & "'"
MPB_ADOCN.Open "Driver={SQL Server};Server=xfp;UID=sa;DATABASE=bl"
MPB_ADOCN.BeginTrans
MPB_ADOCN.Execute sql
If ERR.Number = 0 Then
    MPB_ADOCN.CommitTrans
    MsgBox "數據庫備份成功!", vbInformation, "提示"
    MsgBox "數據据備份文件存放路徑:" & CommonDialog1.FileName, vbOKOnly, "提示"
    Unload Me
Else
    MPB_ADOCN.RollbackTrans
    MsgBox "數据庫備份失敗!請檢查數據据庫是否正在打開!", vbCritical, "提示"
End If
MPB_ADOCN.Close
Set MPB_ADOCN = Nothing
Me.MousePointer = 1
trip: Exit Sub

解决方案 »

  1.   

    你这是错误的,
    to disk=路径文件
    这里的路径是针对服务器而言
    备份时的文件是存放在服务器上的
    如果你的服务器上没有e:\bak\bakdata这个路径那么就会出错
      

  2.   

    我的服務器上有這個路徑,在客戶端顯示就是\\服務器名\bak\bakdate,我想備份在這個路径下,可是就是出錯,請問到底怎樣解決這個問題
      

  3.   

    你要不分两步试试看。
    1、用 sp_addumpdevice 'disk', 'name', 
       DISK =path\name.bat
    2、用 BACKUP DATABASE MyNwind TO name 能够
      

  4.   

    sql = "backup database db_mis to disk='全路径名称'"
    "全路径名称"必须是在数据库所在的机器里看到的路径,而不是在客户端看到的路径。
    如客户端看到的"\\服務器名\bak\bakdate",必须改为服務器本地的路径。
      

  5.   

    SQL的备份路径不能是网络路径,建议看看有关SQL里面的一个关于SQL操作的DMO组件