Avatar billede koldstar Nybegynder
04. august 2005 - 12:02 Der er 1 kommentar og
1 løsning

SQLDMO - Restore Datbase

Hej eksperter
Jeg har 2 scripts der hendholdsvis kan lave en backup ad en DB og restore den igen.

Dette virker fint, hvis jeg laver en backup og restorer den igen på samme server, eller på en server hvor db-filerne ligger samme sted som på den server hvor backupfilen er lavet.

Det jeg ønsker er sådan set at kunne ændre readonly-proppertyen PrimaryFilePath (se linie 27 i scriptet)

Findes der en anden måde at gøre dett på?

Sub restoreDB(ByVal strRestorePath As String)
        If strSQLUserId.ToLower <> "sa" Then
            strSQLPassword = InputBox("Indtast venligst SA-password: ", )
            strSQLUserId = "sa"
        End If

        Dim server As SQLDMO.SQLServer2Class
        Dim database As SQLDMO.Database2
        Dim Restore As SQLDMO.Restore2

        frmprocess = New frm_progress
        frmprocess.Progress_Actual.Visible = False
        frmprocess.Progress_total.Maximum = 100
        frmprocess.Progress_total.Value = 0
        frmprocess.showProgress()
        frmprocess.BringToFront()

        Try
            server = New SQLDMO.SQLServer2Class
            Restore = New SQLDMO.Restore2Class

            server.LoginSecure = False

            server.Connect(strServerName, strSQLUserId, strSQLPassword)

            database = CType(server.Databases.Item(strDBName), SQLDMO.Database2)

            'database.PrimaryFilePath = "d:\databases\"
            Restore.Database = database.Name
            Restore.Files = strRestorePath


            'Begin - set up events sink
            Dim cpContainer As UCOMIConnectionPointContainer
            cpContainer = CType(Restore, UCOMIConnectionPointContainer)
            Dim cpPoint As UCOMIConnectionPoint
            Dim PES As RestoreSink = New RestoreSink
            Dim guid As Guid = New Guid("10023206-E260-11CF-AE68-00AA004A34D5")
            cpContainer.FindConnectionPoint(guid, cpPoint)
            Dim intCookie As Integer
            cpPoint.Advise(PES, intCookie)
            'End - set up events sink

            Restore.SQLRestore(server)

            cpPoint.Unadvise(intCookie)
            cpPoint = Nothing
            cpContainer = Nothing
            PES = Nothing

            server.DisConnect()
            Restore = Nothing
            server = Nothing

        Catch ex As System.Runtime.InteropServices.COMException
            If ex.ErrorCode = -2147218403 Then
                MsgBox("Databasen kunne ikke genskabes da der er andre forbundet til den!")
            Else
                MsgBox(ex.ToString)
            End If

        Catch ex As Exception
            MsgBox(ex.Message & vbCrLf & ex.ToString)
        Finally
        End Try

        frmprocess.Close()

        MsgBox("Database restored!")
    End Sub
Avatar billede koldstar Nybegynder
04. august 2005 - 12:04 #1
ad = af
Avatar billede koldstar Nybegynder
09. september 2005 - 23:46 #2
okay, jeg rydder op
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester