Восстановление резервной копии базы данных по сети
-
08-06-2019 - |
Вопрос
Как восстановить резервную копию базы данных с помощью SQL Server 2005 по сети?Я помню, что делал это раньше, но было что-то странное в том, как это нужно было делать.
Решение
База данных часто работает как служба под учетной записью без доступа к сети.В этом случае вы не сможете выполнить восстановление непосредственно по сети.Либо резервную копию необходимо скопировать на локальный компьютер, либо службу базы данных необходимо запустить от имени пользователя с соответствующим доступом к сети.
Другие советы
У вас есть несколько вариантов использования сетевого файла в качестве источника резервного копирования.
- Подключите сетевой диск/путь, файл хостинга под тем же пользователем, что и 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 и запустить его от имени пользователя с доступом к местоположению файла.
Убедитесь, что пользователь, запускающий ваш SQL services
в "Services.msc"
это активный каталог "Domain User"
это решит проблему.
Вы можете использовать SP xp_cmdshell для подключения сетевого диска к серверу sql, после этого он появится в окне просмотра файлов.
EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'
больше информации здесь: Восстановление БД с сетевого диска
Работало для меня!
Мне приходилось делать это несколько раз, и я знаю только два варианта.Скопируйте файл локально на SQL Server или на сервере SQL создайте подключенный сетевой диск к общему ресурсу, содержащему файл резервной копии.
Кроме того, вам необходимо убедиться, что служба SQL Server работает от имени пользователя, имеющего доступ к сети и разрешения на общий ресурс, где находится файл резервной копии.«Локальная система» не будет иметь разрешений на доступ к сети.
В качестве примечания: если вы используете SQL на виртуальной машине, зачастую проще просто временно настроить новый диск на виртуальной машине с достаточным пространством для копирования файлов резервных копий, выполнить восстановление из этой новой локальной копии, а затем удалите временный диск.
Это может быть полезно, если остановка/запуск службы SQL для изменения ее учетной записи является проблемой.
Создайте общий диск на компьютере, на котором есть резервные копии, скажем, на сервере1 есть резервные копии в папке «Резервные копии».Предоставьте полный доступ учетной записи, на которой работает 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-сервере
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