VB. NET SMO Restore code работает на локальном SQL экземпляре сервера, но не на другом SQL экземпляре сервера - PullRequest
0 голосов
/ 31 января 2020

Я использую пространство имен 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.

Что происходит с моим кодом?

...