Mohamed Aboelkheer Ответов: 2

Резервное копирование и восстановление базы данных SQL с помощью SMO


Добро пожаловать
Я хочу сделать резервное копирование и восстановление базы данных SQL с помощью библиотеки SMO в vb.net
Я использовал определенные коды, но неудачные попытки
Пожалуйста, сообщите конкретный код
Приветствия

Что я уже пробовал:

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

Private Sub btnBackup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackup.Click
   Dim oConn As New ServerConnection(<Ostora>, <sa>, <9080123>)
   Dim oServer As New Server(oConn)
   Dim oBackup As New Backup
   oBackup.Devices.AddDevice("d:\backup.bak", DeviceType.File)
   oBackup.Database = om_db
   oBackup.Action = BackupActionType.Database
   oBackup.Initialize = True
   oBackup.PercentCompleteNotification = 10
   AddHandler bkp.PercentComplete, AddressOf ProgressEventHandler
   oBackup.SqlBackup(oServer)
End Sub

Private Sub btnRestore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRestore.Click
   Dim oConn As New ServerConnection(<Ostora>, <sa>, <9080123>)
   Dim oServer As New Server(oConn)
   Dim oRestore As New Restore
   oRestore.Devices.AddDevice("d:\backup.bak", DeviceType.File)
   oRestore.Database = om_db
   oRestore.Action = RestoreActionType.Database
   oRestore.ReplaceDatabase = True
   oRestore.PercentCompleteNotification = 10
   AddHandler res.PercentComplete, AddressOf ProgressEventHandler
   oRestore.SqlRestore(oServer)
End Sub

2 Ответов

Рейтинг:
2

RickZeeland

Хотя в большинстве примеров SMO используется для резервного копирования и восстановления, это вовсе не обязательно и может привести к проблемам при использовании другой версии SQL Server, поскольку Microsoft иногда изменяет библиотеки DLL SMO и функциональные возможности.

Вот некоторые примеры, которые не используют SMO, взятые из:
Резервное копирование базы данных SQL Server с моего компьютера, используя приложение vb.net окна [^]

Dim sqlConn As New SqlConnection("Data Source=(local);Initial Catalog=master;User ID=sa;Trusted_Connection=true")

sqlConn.Open()

Dim sCommand = "BACKUP DATABASE [DatabaseName] TO DISK = N'E:\Backup\Backup.bak' WITH COPY_ONLY"

Using sqlCmd As New SqlCommand(sCommand, sqlConn)
    sqlCmd.ExecuteNonQuery()
End Using

sCommand = "RESTORE DATABASE [DatabaseName] FROM DISK = N'E:\Backup\TestBackup.bak' WITH REPLACE"

Using sqlCmd As New SqlCommand(sCommand, sqlConn)
    sqlCmd.ExecuteNonQuery()
End Using


Если восстановление работает неправильно, попробуйте сначала использовать Master или не используйте WITH REPLACE.
Это также может помочь сначала удалить существующую базу данных.
Также видеть: sql server - восстановление базы данных SQL с опцией замены - переполнение стека[^]


Mohamed Aboelkheer

Этот код был опробован
Процесс резервного копирования был успешно завершен, но процесс восстановления успешен один раз, и при восстановлении эксперимента он терпит неудачу, и компьютер должен быть перезапущен. Пожалуйста, совет.
Нужно ли перезапускать сервер после завершения процесса восстановления?

RickZeeland

Перезапуск не требуется, какую версию SQL Server вы используете ? возможно, Вам понадобится немного другая команда восстановления. Вы также можете протестировать эту команду из среды SQL Server Management Studio.

Mohamed Aboelkheer

Я использую sql server 2012

RickZeeland

Я обновил решение с помощью некоторых советов, боюсь, что больше ничем не смогу вам помочь, так как мы давно перестали использовать SQL Server. Теперь мы используем PostgreSQL, который, к счастью, не имеет таких проблем с резервным копированием и восстановлением, а также гораздо проще объединяется с вашим приложением.

Mohamed Aboelkheer

Большое спасибо за вашу помощь

Рейтинг:
12

OriginalGriff

Взгляните на это: Резервное копирование базы данных SQL на языке C#[^- это код, который я использую. Он написан на языке C#, но он довольно очевиден и объясняет ряд других подводных камней, о которых вы должны знать при резервном копировании баз данных SQL.


Mohamed Aboelkheer

Этот код был опробован
Процесс резервного копирования был успешно завершен, но процесс восстановления успешен один раз, и при восстановлении эксперимента он терпит неудачу, и компьютер должен быть перезапущен. Пожалуйста, совет.
Нужно ли перезапускать сервер после завершения процесса восстановления?