關 SQLDMO 組件在一些用法!

來源:互聯網
上載者:User
 

今天做一個恢複資料庫的程式時,突然想起 SqlServer 有一個功能強大的組件 sqldmo ,與是查閱了一下它的相關協助,發現它剛好能夠滿足我的需求:
下面是我的程式的部代碼,在這裡共用組大家分享。

以下代碼在 VB6中文版中編譯通過!

啟動資料服務:
Public Sub Start_server()
    Dim svr As New SQLDMO.sqlServer
    On Error GoTo errHwnd
    svr.Start False, MyServer
    svr.Close
    Exit Sub
errHwnd:
    If Err.Number <> -2147023840 Then
        MsgBox Err.Number & vbCrLf & Err.Description, vbExclamation, "錯誤"
    End If
End Sub

聯結並驗證密碼:
Public Function ConnServer(ByVal sqlServer As String, ByVal uid As String, ByVal pwd As String) As Boolean
    Dim st As SQLDMO_SVCSTATUS_TYPE
    Dim svr As New SQLDMO.sqlServer
    On Error GoTo errHwnd
    svr.LoginTimeout = 10
    svr.Connect sqlServer, uid, pwd
    ConnServer = True
    Exit Function
errHwnd:
    If Err.Number = -2147203048 Then
        MsgBox "登入失敗密碼不正確,請重新輸入!", vbInformation, "提示"
    Else
        Resume Next
    End If
End Function

恢複資料庫時如果要重新部署資料庫特理檔案位置需注意設定
恢複資料庫:
Public WithEvents ores As SQLDMO.Restore                '聲明事件注意此行放在程序呼叫之前
Private Sub RestoreData(ByVal dataFile As String)
    On Error GoTo errHwd
    Dim oSql As SQLDMO.sqlServer
    Set ores = New SQLDMO.Restore
    Set oSql = New SQLDMO.sqlServer
    oSql.LoginSecure = False
    oSql.Connect ServerName, sqlUser, sqlPwd            '聯結資料服務
    ores.Action = SQLDMORestore_Database                '恢複類型資料庫
    ores.Database = "Rcrs"                              '資料庫名稱
    ores.ReplaceDatabase = True                         '替代現有資料庫如不存則建立它
    ores.Files = dataFile                               '備份檔案名,如果是多個裝置上的需使用.Devices屬性
    ores.DatabaseFiles = dataFile                  '資料庫檔案此參數必須設定否則無法使用 relocatefiles
    ores.FileNumber = 1                                 '檔案在裝置上的ID號如果你只有一個檔案就是1
    'RelocateFiles 重新部署資料庫邏輯名'"[邏輯名],[物理檔案名稱地址]"
    ores.RelocateFiles = "[tyrs2_data]" & "," & "[" & App.Path & "\rcrs_data.mdf]," & _
                        "[tyrs2_log]" & "," & "[" & App.Path & "\rcrs_log.ldf]"
    DoEvents
    ores.SQLRestore oSql                                '調用恢複方法
    Set ores = Nothing
    Set oSql = Nothing
    Exit Sub
errHwd:
    Select Case Err.Number
        Case -2147221499
            '這個錯誤尚不知道原因,但不影響操作結果
            Resume Next
        Case -2147218403
            MsgBox "資料庫正在使用,請關閉所有正在使用資料的程式!", vbExclamation, "錯誤"
        Case Else
            MsgBox Err.Number & vbCrLf & Err.Description, vbExclamation, "提示"
    End Select
End Sub
'恢複事件
Private Sub ores_PercentComplete(ByVal Message As String, ByVal Percent As Long)
        ProBar.Value = ProBar.Max * (Percent / 100)      '設定進度條
End Sub




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。