Файловая структура, видимая удаленным сервером с использованием VB.Net - PullRequest
0 голосов
/ 26 марта 2012

Я использую приведенный ниже код, чтобы программно восстановить базу данных SQL с помощью VB.Net

        Dim srvConn2 As New ServerConnection(strDataSource)
        srvConn2.LoginSecure = False
        srvConn2.Login = strDBUserID
        srvConn2.Password = strDBPassword
        Dim srv3 As New Server(srvConn2)
        Dim res As Restore = New Restore()

        If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
          res.Devices.AddDevice(OpenFileDialog1.FileName, DeviceType.File)
          res.Database = "MyDatabaseName"
          res.ReplaceDatabase = True
          res.SqlRestore(srv3)
          MsgBox("Restore Complete", vbInformation)
        End If

. Это прекрасно работает, когда файл резервной копии находится на том же компьютере, где работает база данных.Проблемы начинаются, когда база данных находится на другом компьютере в сети.Есть ли какой-нибудь способ заставить OpenFileDialog отображать структуру данных удаленного компьютера, чтобы оттуда можно было загрузить файл резервной копии БД?SQL Management Studio показывает удаленную файловую структуру, когда вы пытаетесь вручную восстановить базу данных.Мне было интересно, есть ли элемент управления, похожий на тот, который появляется в SQL Management Studio.

Если это невозможно, есть ли способ заставить удаленный сервер SQL восстановить базу данных из файла на локальном компьютере??Я бы предпочел не использовать общие сетевые диски или пути UNC, поскольку это должно быть как можно проще, и я не хочу, чтобы пользователям приходилось играть с общим доступом и тому подобным.

1 Ответ

1 голос
/ 28 марта 2012

Ваш первый случай - когда ваш код работает локально, а SQL удален, а резервная копия удалена.Не существует стандартного элемента управления для просмотра файлов на удаленном сервере, но если у вас достаточно прав, вы можете получить доступ к удаленной файловой системе с помощью команды SQL xp_cmdshell ( link ).Вы можете написать свой собственный элемент управления, используя xp_cmdshell, чтобы он выглядел аналогично OpenFileDialog.

Ваш второй случай, когда резервное копирование является локальным.Нет абсолютно никакого способа, которым SQL мог бы получить к нему доступ, если вы не указали правильный путь UNC.

Обходной путь может состоять в том, чтобы позволить пользователю выбрать локальный файл, затем (без ведома пользователя) программа загрузит этот файл в предопределенное расположение на удаленном сервере SQL, и SQL восстановит его из этого расположения.

...