Восстановление резервной копии базы данных по сети
Как восстановить резервную копию базы данных с помощью SQL Server 2005 по сети? Я помню, как делал это раньше, но в том, как ты это делал, было что-то странное.
10 ответов
База данных часто работает как служба под учетной записью без доступа к сети. Если это так, то вы не сможете восстановить напрямую по сети. Либо резервная копия должна быть скопирована на локальный компьютер, либо служба базы данных должна работать как пользователь с надлежащим доступом к сети.
У вас есть несколько вариантов использования сетевого файла в качестве источника резервного копирования
- Сопоставьте сетевой диск / путь, файл размещения, под тем же пользователем как 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
Вы не можете сделать это через графический интерфейс SSMS, но вы можете сделать это с помощью сценария. ВОССТАНОВИТЬ БАЗУ ДАННЫХ из DISK='\unc\path\filename' Если вам требуется автоматизировать этот процесс, лучше всего настроить задание SQL Server и запустить его как пользователь с доступом к расположению файла.
Вы можете использовать SP xp_cmdshell для сопоставления сетевого привода для сервера sql, после чего он отобразится в окне просмотра файлов.
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
подробнее здесь: Восстановление БД с сетевого диска
Работал на меня!
Убедитесь, что пользователь запускает ваш SQL services
в "Services.msc"
это активный каталог "Domain User"
это решит проблему.
Кроме того, необходимо убедиться, что служба SQL Server запущена от имени пользователя, имеющего доступ к сети, и разрешений для общего ресурса, в котором находится файл резервной копии. "Локальная система" не будет иметь доступа к сети.
В качестве примечания: если вы работаете с SQL на виртуальной машине, часто бывает проще просто временно установить новый диск на виртуальной машине с достаточным пространством для копирования файлов резервных копий, выполнить восстановление из этой новой локальной копии, а затем удалите временный диск.
Это может быть полезно, если остановка / запуск службы SQL для изменения ее учетной записи является проблемой.
Я должен был сделать это несколько раз, и есть только два варианта, которые я знаю. Скопируйте файл локально на SQL Server или на сервере SQL создайте подключенный сетевой диск к общей папке, содержащей файл резервной копии.
Создайте общий диск на машине с резервными копиями, скажем, server1 имеет резервные копии в папке "Резервные копии". Предоставьте полный контроль учетной записи, на которой запущен SQL Server. На сервере, который вы хотите восстановить для запуска SSMS, перейдите на страницу восстановления базы данных и выберите "С устройства". В диалоговом окне "Найти файл резервной копии -" Сервер "" удалите все данные в поле "Выбранный путь" и в поле "Имя файла" укажите полный путь, так что "\server\backups\db.bak". По крайней мере, это работало для меня при переходе с 05 на 08. Не предпочтительный метод, потому что любой сбой в сети может вызвать проблемы с восстановлением.
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