PDA

View Full Version : Back up and Restore in SQL-Server using SMO



navid010
شنبه 04 آبان 1387, 00:33 صبح
از کلاس زیر می توانید برای پشتیبان گیری و بازیابی استفاده کنید

رفرنس ها

Microsoft.SqlServer.SMO
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.SmoEnum
Microsoft.SqlServer.SqlEnum

---------------------------------------------------

Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common

Public Class SQLManagement
Public Function BackupDatabase(ByVal oServer As String, _
ByVal oDatabase As String, _
ByVal destinationFolder As String, _
ByVal backupName As String, _
Optional ByVal oPassword As String = "") As Boolean

Dim bu As Backup = New Backup

Dim fileName As String = System.IO.Path.Combine(destinationFolder, backupName & ".bak")

bu.Database = oDatabase
bu.Devices.AddDevice(fileName, DeviceType.File)
bu.Action = BackupActionType.Database
bu.SetPassword(oPassword)
bu.Initialize = True

AddHandler bu.PercentComplete, AddressOf Backup_PercentCompleted
AddHandler bu.Complete, AddressOf Backup_Completed

Dim server As New Server(oServer)

Try
bu.SqlBackup(server)
Catch ex As Exception
Throw New System.Exception(ex.Message, ex.InnerException)
Return False
End Try

Return True
End Function

Public Function RestoreDatabase(ByVal oServer As String, _
ByVal oDatabase As String, _
ByVal fileName As String, _
Optional ByVal oPassword As String = "") As Boolean


Dim server As New Server(oServer)
Dim r As New Restore
r.Database = oDatabase
r.ReplaceDatabase = True
r.SetPassword(oPassword)
r.Devices.AddDevice(fileName, DeviceType.File)

AddHandler r.PercentComplete, AddressOf Restore_PercentCompleted
AddHandler r.Complete, AddressOf Restore_Completed
AddHandler r.Information, AddressOf Restore_Information
Try
r.SqlRestore(server)
Catch ex As Exception
Throw New System.Exception(ex.Message, ex.InnerException)
Return False
End Try

Return True
End Function

Public Event Backup_PercentCompleted_Event(ByVal sender As Object, ByVal e As PercentCompleteEventArgs)
Protected Sub Backup_PercentCompleted(ByVal sender As Object, ByVal e As PercentCompleteEventArgs)
RaiseEvent Backup_PercentCompleted_Event(sender, e)
End Sub

Public Event Backup_Completed_Event(ByVal sender As Object, ByVal e As ServerMessageEventArgs)
Protected Sub Backup_Completed(ByVal sender As Object, ByVal e As ServerMessageEventArgs)
RaiseEvent Backup_Completed_Event(sender, e)
End Sub

Public Event Restore_PercentCompleted_Event(ByVal sender As Object, ByVal e As PercentCompleteEventArgs)
Protected Sub Restore_PercentCompleted(ByVal sender As Object, ByVal e As PercentCompleteEventArgs)
RaiseEvent Restore_PercentCompleted_Event(sender, e)
End Sub

Public Event Restore_Completed_Event(ByVal sender As Object, ByVal e As ServerMessageEventArgs)
Protected Sub Restore_Completed(ByVal sender As Object, ByVal e As ServerMessageEventArgs)
RaiseEvent Restore_Completed_Event(sender, e)
End Sub

Public Event Restore_Information_Event(ByVal sender As Object, ByVal e As ServerMessageEventArgs)
Protected Sub Restore_Information(ByVal sender As Object, ByVal e As ServerMessageEventArgs)
RaiseEvent Restore_Information_Event(sender, e)
End Sub

Public Function CreateDatabase(ByVal oServer As String, ByVal databaseName As String) As Boolean
Dim server As New Server(oServer)
Dim db As New Database
db.Name = databaseName
server.Databases.Add(db)
db.Create()
End Function
End Class