Я использую пространство имен Microsoft.SqlServer.Management.Smo
для восстановления bak-файла базы данных с моего локального SQL экземпляра сервера на другой SQL экземпляр сервера в другом p c.
Мое приложение winform может подключиться к этому SQL экземпляру сервера (он может запросить этот экземпляр и удалить базу данных из него), но когда я попытался восстановить его, обнаружил:
FailedOperationException: System.Data.SqlClient.SqlError: поиск в каталоге для файл 'C \ Program Files SQL Server \ MSSQL15.SQLEXPRESS01 \ DATA \ ClientTest.MDF завершился ошибкой операционной системы 3 (системе не удается найти указанный путь.)
Этот путь ( 'C \ Program Files SQL Server \ MSSQL15.SQLEXPRESS01 \ DATA) находится в моем локальном p c. Путь к удаленному экземпляру sql: 'C \ Program Files SQL Server \ MSSQL15.SQLEXPRESS \ DATA
Вот мой код восстановления:
Public Sub SMORestore(bkUpFile As String, dbName As String)
Dim conn As ServerConnection = New ServerConnection(serverName, userName, password)
Dim srv As Server = New Server(conn)
Dim res As Restore = New Restore()
Me.Cursor = Cursors.WaitCursor
Try
res.Database = dbName
res.Action = RestoreActionType.Database
res.Devices.AddDevice(bkUpFile, DeviceType.File)
res.Database = dbName
res.NoRecovery = False
res.ReplaceDatabase = True
res.SqlRestore(srv)
MessageBox.Show("Restore of " & dbName & " Complete!", "Restore", MessageBoxButtons.OK, MessageBoxIcon.Information)
conn.Disconnect()
Catch exSMO As SmoException
MessageBox.Show(exSMO.ToString())
Catch ex As Exception
MessageBox.Show(ex.ToString())
Finally
Me.Cursor = Cursors.[Default]
End Try
End Sub
Он отлично работает на моем локальный SQL экземпляр сервера, но не на другом SQL экземпляре сервера p c.
Что происходит с моим кодом?