Ответов (10)10
База данных часто работает как служба под учетной записью без доступа к сети. В этом случае вы не сможете восстановить данные напрямую по сети. Либо резервную копию необходимо скопировать на локальный компьютер, либо службу базы данных необходимо запустить от имени пользователя с надлежащим доступом к сети.
В качестве побочного примечания, если вы запускаете SQL на виртуальной машине, часто проще просто временно настроить новый диск на виртуальной машине с достаточным пространством для копирования файлов резервных копий, выполнить восстановление из этой новой локальной копии, а затем удалите временный диск.
Это может быть полезно, если остановка / запуск службы SQL для изменения учетной записи является проблемой.
Вы можете использовать SP xp_cmdshell для сопоставления сетевого диска для сервера sql, после чего он появится в окне просмотра файлов.
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
подробнее здесь: Восстановление БД с сетевого диска
Сработало у меня!
У вас есть несколько вариантов использования сетевого файла в качестве источника резервного копирования.
- Сопоставьте сетевой диск / путь, файл хоста, под тем же пользователем, что и MS-SQL Server.
- Используйте расширенную хранимую процедуру xp_cmdshell для подключения сетевого диска изнутри MS SQL (таким образом, командная оболочка будет иметь те же привилегии, что и учетная запись пользователя, на которой запущен SSMS)
-- allow changes to advanced options
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'
После этого диск Z: будет виден в студии управления сервером или просто
RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO
EXEC sp_configure 'show advanced options', 1
GO
- Обновите текущие настроенные значения для расширенных параметров.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
- Обновите текущие настроенные значения для расширенных параметров.
RECONFIGURE
GO
- Это должно быть запущено в командной строке (cmd)
NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no
затем на SQL Server
EXEC xp_cmdshell 'NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no'
- После этого диск Z: будет виден в Студии управления сервером или просто
RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE
Вы не можете сделать это через графический интерфейс SSMS, но можете сделать это с помощью сценария. ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ из DISK = '\ unc \ path \ filename' Если вам нужно автоматизировать этот процесс, лучший способ - настроить задание SQL Server и запустить его от имени пользователя с доступом к расположению файла.
Создайте общий диск на машине, на которой есть резервные копии, скажем, на server1 есть резервные копии в папке «Резервные копии». Предоставьте полный контроль учетной записи, на которой запущен SQL Server. На сервере, который вы хотите восстановить, чтобы запустить SSMS, перейдите к восстановлению базы данных и выберите «С устройства». В диалоговом окне «Найдите файл резервной копии -« Сервер »» и удалите все, что находится в поле «Выбранный путь», а в поле «Имя файла» укажите полный путь: «\ server \ backups \ db.bak». По крайней мере, у меня это сработало при переходе с 05 на 08. Не лучший метод, потому что любой сбой в сети может вызвать проблемы с восстановлением.