SQLDMO - Restore Datbase
Hej eksperterJeg 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