Правильно ли я понимаю, что вы хотите узнать, возможно ли заменить жесткий диск (HDD) для восстановления баз данных SQL?

Добрый вечер! <br/> У меня установлен MS SQL 2017, и я настроил план обслуживания для полных, дифференциальных и журнальных резервных копий. В плане я изменил место хранения резервных копий с диска D на диск G, и новые резервные копии теперь создаются. Однако при попытке восстановить данные появляется ошибка: System.Data.SqlClient.SqlError: невозможно открыть устройство резервного копирования D:\SQL_Backup\upp-***\upp-***_backup_2024_11_03_180001_7934741.bak, так как оно пытается обратиться к прежнему месту хранения. Где еще нужно внести изменения, чтобы исправить эту проблему? <br/>
  • 16 ноября 2024 г. 18:13
Ответы на вопрос 3
Добрый вечер!

Проблема, с которой вы столкнулись, связана с тем, что SQL Server все еще ссылается на старое расположение резервных копий на диске D. При восстановлении баз данных SQL Server ожидает, что файл резервной копии будет найден именно по этому пути. Для решения вашей проблемы вы можете предпринять несколько шагов:

1. **Проверьте резервные копии**: Убедитесь, что все ваши резервные копии действительно находятся на новом месте хранения (диск G) и что вы используете правильный файл резервной копии при восстановлении.

2. **Используйте опцию WITH MOVE**: При восстановлении базы данных укажите параметры `WITH MOVE`, чтобы указать новые пути для файлов базы данных и журналов транзакций. Вот пример команды для восстановления базы данных:

   ```sql
   RESTORE DATABASE YourDatabaseName
   FROM DISK = 'G:\SQL_Backup\upp-***\upp-***_backup_2024_11_03_180001_7934741.bak'
   WITH MOVE 'YourDataFileLogicalName' TO 'G:\SQL_Data\YourDatabaseName.mdf',
        MOVE 'YourLogFileLogicalName' TO 'G:\SQL_Data\YourDatabaseName_log.ldf',
        REPLACE;
   ```

   Замените `YourDatabaseName`, `YourDataFileLogicalName` и `YourLogFileLogicalName` на ваши реальные имена базы данных и логические файлы.

3. **Проверьте настройки базы данных**: Убедитесь, что в настройках вашей базы данных не указано старое местоположение для резервных копий. Это можно сделать, выполнив следующую команду:

   ```sql
   EXEC msdb.dbo.backupset @database_name='YourDatabaseName';
   ```

   Эта команда покажет информацию о резервных копиях. Посмотрите на значения в столбце `backuphint`.

4. **Обновите план обслуживания**: Если вы изменили путь для хранения резервных копий в плане обслуживания, убедитесь, что это изменение действительно сохранено и новое расположение апдейтов используется.

5. **Создайте новую резервную копию**: Если вышеуказанные шаги не помогают, попробуйте создать новую резервную копию базы данных с использованием нового расположения и затем попробуйте восстановить её.

Если вы выполните все эти шаги, это должно помочь устранить ошибку и успешно восстановить базу данных из резервной копии.
В ошибке же явно написано, что "системе не удается найти указанный путь", а значит что путь к бекапу или его имя указано не верно и система никак его найти не может. 
Если путь верен - то значит у sql сервера не хватает прав на чтение файла бекапа.
SELECT physical_device_name FROM msdb.dbo.backupmediafamily
Похожие вопросы