Как сделать резервную копию базы данных и сохранить ее локально?
Итак, вот проблема. Мне нужно использовать C# для локального резервного копирования базы данных с удаленного сервера баз данных, и у нас есть только общий ресурс \\computer\c$.
Если ответом является резервное копирование в местоположение на удаленном сервере базы данных, а затем копирование этого локального, предположим, что в удаленном расположении нет общего ресурса. Просто б / у у меня есть доступ к базе данных, не значит, что у меня есть доступ к файловой системе.
Это Q/A выглядит близко к тому, что я хочу, но помните, что обычная учетная запись в базе данных не будет иметь доступа к сети. Пример сценария sql для архивации и передачи файла резервной копии базы данных
Имея все это в виду... кто-нибудь сделал что-то подобное и хочет поделиться? Или есть идеи как это сделать?
ОБНОВЛЕНИЕ: я был неопределенным нарочно. Контекст здесь такой:
- У меня нет доступа к файлам на сервере, где находится база данных.
- Я запускаю C# с клиента под учетными данными клиента, поэтому у меня есть полный контроль над клиентским компьютером и я могу делать что угодно в этом домене.
Я думаю, что я действительно понял, что мы собираемся делать, хотя:
- Создайте специальную папку в области AppData текущего пользователя.
- Создайте файлообменник в этой папке
- Добавить права для всех для этой конкретной общей папки и папки.
- Обработайте резервную копию на основе этого ресурса.
- Удалите общий ресурс и сбросьте разрешения.
Если кому-то интересно, к чему относится этот вопрос: RoundhousE
4 ответа
Кажется, я на самом деле понял, что мы будем делать:
- Создайте специальную папку в области AppData текущего пользователя.
- Создайте файлообменник в этой папке
- Добавить права для всех для этой конкретной общей папки и папки.
- Обработайте резервную копию на основе этого ресурса.
- Удалите общий ресурс и сбросьте разрешения.
Если кому-то интересно, к чему относится этот вопрос: RoundhousE
Контекст? Oracle? MySQL? SQL Server? Размер дб? Время резервного копирования? Требования к доступности? Требования к шифрованию? Проверка количества мест?
Я предполагаю, что вы говорите о SQL Server, основанном на примере TSQL, к которому я бы порекомендовал проверить объекты DMO. Вот учебник для начинающих - http://www.codersource.net/csharp_sqldmo_sqlserver.aspx.
По правде говоря - смутный характер вашего вопроса - и тот факт, что он свободен от контекста, вызывает у меня какой-то хиби-болван. Обязательно тестируйте в тестовой среде и не запускайте на производственных данных, хорошо?
Система резервного копирования SQL Server выполняет всю процедуру резервного копирования на сервере, что в основном означает, что файл должен быть помещен туда, где сервер базы данных может его разместить и имеет к нему доступ.
Другими словами, файл будет записан с сервера.
Если ты:
- Невозможно получить доступ к файлам напрямую на сервере, с клиента
- Нельзя каким-либо образом загружать файлы с сервера на клиент
- Невозможно записать файлы с сервера в общее место, доступное клиенту любым способом
Тогда вам остается только один способ: перезаписать резервную копию.
Если ваш актуальный вопрос такой:
Имея все это в виду... кто-нибудь сделал что-то подобное и хочет поделиться?
Тогда я рискну предположить, что ответ на этот вопрос: нет.
Вы уверены, что не можете изменить проблему на проблему , которую можно решить?
Если вы хотите / нуждаетесь в резервном копировании базы данных, то, как правило, для обеспечения согласованности базы данных сервер базы данных должен быть либо полностью отключен, либо, по крайней мере, полностью находиться в режиме только для чтения.
Ваш вопрос звучит так, как будто ваши "претенденты" поставили перед вами задачу резервного копирования удаленного сервера, хотя ни одно из этих условий не выполняется. Единственный разумный ответ на такой вызов заключается в том, что это невозможно сделать.