用sqldmo可实现对sqlserver的备份,但无进度条。用VB就可以。请看源码。
VB的源码:
关键在于oBackupEvent ,我想问一下
oBackupEvent 是oBackUp的一个事件吗?Dim gSQLServer As SQLDMO.SQLServer
Dim WithEvents oBackupEvent As SQLDMO.Backup    On Error GoTo ErrHandler:
    
    Dim oBackup As SQLDMO.Backup
    
    gDatabaseName = cmbDatabaseName.Text
    Set oBackup = New SQLDMO.Backup
    Set oBackupEvent = oBackup ' enable events
    
    oBackup.Database = gDatabaseName
    gBkupRstrFileName = txtDataFileName.Text
    oBackup.Files = gBkupRstrFileName
    
    ' Delete the datafile to allow the application to create a brand new file.
    ' This will prevent attaching the new backup data to the old data if there
    ' is any.
    If Len(Dir(gBkupRstrFileName)) > 0 Then
        Kill (gBkupRstrFileName)
    End If
    
    ' Change mousepointer while trying to connect.
    Screen.MousePointer = vbHourglass
    
    ' Backup the database.
    oBackup.SQLBackup gSQLServer
    
    ' Change mousepointer back to the default after connect.
    Screen.MousePointer = vbDefault
   
    Set oBackupEvent = Nothing ' disable events
    Set oBackup = Nothing
    
    Exit SubPrivate Sub oBackupEvent_PercentComplete(ByVal Message As String, ByVal Percent As Long)
    PrintStat "oBackupEvent_PercentComplete -- " & Message & " " & Percent
End Sub而对应的Delphi代码如下:
    gSQLServer := CreateOleObject('SQLDMO.SQLServer');
    oBackUp := CreateOleObject('SQLDMO.BackUp');    gSQLServer.LoginSecure := false;
    gSQLServer.LoginTimeout := 15;
    gSQLServer.Connect('angel', 'sa', 'zonekingsa');
    
    oBackUp.Files := 'c:\Northwind.bak';
    oBackUp.DataBase := 'Northwind';
    oBackUp.SQLBackUp(gSQLServer);
    ShowMessage('success');    gSQLServer := Unassigned;
    oBackUp := Unassigned;最关键的地方在于给oBackUp这个对象加上CompletePercent这个事件。
但我如何也加不上,哪位大侠做过,请指点一二。。

解决方案 »

  1.   

    things(平) (男儿在他乡,焉得不憔悴!) 
    谢谢我已经先做好一个假的,先应付过关,呵呵。。真的慢慢研究中。。
      

  2.   

    唉,我的情况和你不太一样,愁死我了,我用ACCSEE写了个段子,要在整理数据是显示进度,我做TIMER和线程都不行。
    http://expert.csdn.net/Expert/TopicView1.asp?id=1905529
      

  3.   

    应该是PercentComplete吧HRESULT PercentComplete(SQLDMO_LPCSTR Message, long Percent);
    应该是一个回调函数,你可以在delphi中申明同样各式的全局函数,然后将地址付给对象。-----
    我没有试,你可以试一下