'-------備份與還原------------------------ Private Function Backup_Restore(iType As String) As Long On Error GoTo Backup_Restore_ErrHand Dim oSqlNameSpace As SQLNamespace Dim oSqlNS As SQLNamespaceObject Dim arSQLArray(10) As Long
Set oSqlNameSpace = New SQLNamespace oSqlNameSpace.Initialize "application", SQLNSRootType_Server, "Server=DATASERVER; uid=sa;pwd=dataserver;", hwnd 'DATASERVER為server name arSQLArray(0) = oSqlNameSpace.GetRootItem arSQLArray(1) = oSqlNameSpace.GetFirstChildItem(arSQLArray(0), SQLNSOBJECTTYPE_DATABASES) arSQLArray(2) = oSqlNameSpace.GetFirstChildItem(arSQLArray(1), SQLNSOBJECTTYPE_DATABASE, "SalaryNew") 'salarynew為database name Set oSqlNS = oSqlNameSpace.GetSQLNamespaceObject(arSQLArray(2)) Select Case iType Case "Backup" oSqlNS.ExecuteCommandByID (SQLNS_CmdID_DATABASE_BACKUP) Case "Restore" oSqlNS.ExecuteCommandByID (SQLNS_CmdID_DATABASE_RESTORE) End Select Backup_Restore = True
Exit_Function: Set oSqlNS = Nothing Set oSqlNameSpace = Nothing Exit Function Backup_Restore_ErrHand: If iType = "Backup" Then MsgBox "備份未成功﹐可能您沒有安裝SQL SERVER用戶端軟體:" & Err.Description, vbCritical + vbOKOnly, CStr(Err.Number) ElseIf iType = "Restore" Then MsgBox "還原未成功﹐可能您沒有安裝SQL SERVER用戶端軟體:" & Err.Description, vbCritical + vbOKOnly, CStr(Err.Number) End If Backup_Restore = False GoTo Exit_Function End Function
以前這方面我曾經誤導過一些同志……I'm very sorry... 更正一下:SQLDMO根本不可能把Database直接備份到客戶端上,這一點,看看MS的Enterprice Manager里面的備份就知道了,(因它也是用SQLDMO做的)變通的方法就是先備份到服務器…再把文件剪到客戶端……呵呵:)
Private Function Backup_Restore(iType As String) As Long
On Error GoTo Backup_Restore_ErrHand
Dim oSqlNameSpace As SQLNamespace
Dim oSqlNS As SQLNamespaceObject
Dim arSQLArray(10) As Long
Set oSqlNameSpace = New SQLNamespace
oSqlNameSpace.Initialize "application", SQLNSRootType_Server, "Server=DATASERVER; uid=sa;pwd=dataserver;", hwnd 'DATASERVER為server name
arSQLArray(0) = oSqlNameSpace.GetRootItem
arSQLArray(1) = oSqlNameSpace.GetFirstChildItem(arSQLArray(0), SQLNSOBJECTTYPE_DATABASES)
arSQLArray(2) = oSqlNameSpace.GetFirstChildItem(arSQLArray(1), SQLNSOBJECTTYPE_DATABASE, "SalaryNew") 'salarynew為database name
Set oSqlNS = oSqlNameSpace.GetSQLNamespaceObject(arSQLArray(2))
Select Case iType
Case "Backup"
oSqlNS.ExecuteCommandByID (SQLNS_CmdID_DATABASE_BACKUP)
Case "Restore"
oSqlNS.ExecuteCommandByID (SQLNS_CmdID_DATABASE_RESTORE)
End Select
Backup_Restore = True
Exit_Function:
Set oSqlNS = Nothing
Set oSqlNameSpace = Nothing
Exit Function
Backup_Restore_ErrHand:
If iType = "Backup" Then
MsgBox "備份未成功﹐可能您沒有安裝SQL SERVER用戶端軟體:" & Err.Description, vbCritical + vbOKOnly, CStr(Err.Number)
ElseIf iType = "Restore" Then
MsgBox "還原未成功﹐可能您沒有安裝SQL SERVER用戶端軟體:" & Err.Description, vbCritical + vbOKOnly, CStr(Err.Number)
End If
Backup_Restore = False
GoTo Exit_Function
End Function
更正一下:SQLDMO根本不可能把Database直接備份到客戶端上,這一點,看看MS的Enterprice Manager里面的備份就知道了,(因它也是用SQLDMO做的)變通的方法就是先備份到服務器…再把文件剪到客戶端……呵呵:)