Я использую SQL-DMO для восстановления резервной копии базы данных, расположенной на сетевом ресурсе, в экземпляр SQL Server, работающий на локальном компьютере.
Код отлично работает на моей машине. Но на тестовой ВМ это работает, только если я помещаю резервную копию в локальный путь. Если я попробую его в сети, произойдет сбой.
Я обнаружил, что SQL-сервер на виртуальной машине работает под пользователем System и изменил его на Network Service , думая, что это проблема сетевого доступа. Но это не решило проблему.
Этот код не выполняется, потому что вызов ReadFileList возвращает пустой набор результатов.
Dim restore As New SQLDMO.Restore With {
.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database,
.ReplaceDatabase = True,
.Database = dbName,
.Files = "[" + backupFile + "]",
.Devices = ""}
Dim fileList = restore.ReadFileList(sqlserver)
Dim dataLogicalName = fileList.GetColumnString(1, 1)
Dim dataPhysicalName = Path.GetFileName(fileList.GetColumnString(1, 2))
Dim logLogicalName = fileList.GetColumnString(2, 1)
Dim logPhysicalName = Path.GetFileName(fileList.GetColumnString(2, 2))
[SQL-DMO] Этот кэш не содержит наборов результатов, или текущий набор результатов содержит
без строк.
Перед этим кодом я проверяю File.Exists(backupFile)
, и он проходит. Однако я знаю, что процесс, выполняющий эту проверку (моя программа), отличается от процесса, выполняющего восстановление (SQL Server), поэтому это не то, что нужно.
Что может вызвать такое поведение? Что я могу сделать, чтобы выяснить, почему сервер не видит файл резервной копии?