Как сделать резервную копию базы данных и сохранить ее локально? - PullRequest
1 голос
/ 15 ноября 2009

Итак, вот проблема. Мне нужно использовать C # для локального резервного копирования базы данных с удаленного сервера баз данных, и у нас есть только один общий ресурс: \\ computer \ c $.

Если ответом является резервное копирование в местоположение на удаленном сервере базы данных, а затем копирование этого локального, предположим, что в удаленном местоположении нет общего ресурса. Просто б / у у меня есть доступ к базе данных, не значит, что у меня есть доступ к файловой системе.

Этот Q / A выглядит близко к тому, что я хочу, но помните, что обычная учетная запись в базе данных не будет иметь доступа к сети. Пример сценария sql для архивации и передачи файла резервной копии базы данных

Имея все это в виду ... кто-нибудь сделал что-то подобное и хочет поделиться? Или есть идеи как это сделать?

ОБНОВЛЕНИЕ: я был неопределенным нарочно. Контекст здесь такой:

  1. У меня нет доступа к файлам на сервере, где находится база данных.
  2. Я запускаю C # с клиента под учетными данными клиента, поэтому у меня есть полный контроль над клиентским компьютером и я могу делать что угодно в этом домене.

Я думаю, что я действительно понял, что мы будем делать, хотя:

  1. Создать специальную папку в области AppData текущего пользователя.
  2. Создать файловый ресурс в этой папке
  3. Добавить права всем для этой конкретной общей папки и папки.
  4. Обработка резервной копии на основе этого общего ресурса.
  5. Удалите общий ресурс и сбросьте разрешения.

Если кому-то интересно, к чему относится этот вопрос: RoundhousE

Ответы [ 4 ]

1 голос
/ 16 ноября 2009

Контекст? Oracle? MySQL? SQL Server? Размер дб? Время резервного копирования? Требования к доступности? Требования к шифрованию? Проверка Rowcount?

Я предполагаю, что вы говорите о SQL Server, основываясь на примере TSQL, к которому я бы порекомендовал проверить объекты DMO. Вот учебник - http://www.codersource.net/csharp_sqldmo_sqlserver.aspx.

По правде говоря, смутный характер вашего вопроса - и тот факт, что он свободен от контекста, вызывает у меня некоторые хиби-болваны. Обязательно тестируйте в тестовой среде и не запускайте на производственных данных, хорошо?

1 голос
/ 16 ноября 2009

Система резервного копирования SQL Server выполняет всю процедуру резервного копирования на сервере , что в основном означает, что файл должен быть помещен туда, где его может разместить сервер базы данных, и имеет к нему доступ.

Другими словами, файл будет записан с сервера .

Если вы:

  1. Невозможно получить доступ к файлам напрямую на сервере, с клиента.
  2. Нельзя каким-либо образом загружать файлы с сервера на клиент
  3. Невозможно записать файлы с сервера в обычное место, доступное клиенту любым способом

Тогда вам остается только один способ: перезаписать резервную копию.

Если ваш фактический вопрос такой:

Имея все это в виду ... кто-нибудь сделал что-то подобное и хочет поделиться?

Тогда я рискну предположить, что ответ на этот вопрос: Нет .

Вы уверены, , вы не можете изменить проблему на решаемую?

0 голосов
/ 17 ноября 2009

думаю, я действительно понял, что мы собираемся делать:

  1. Создать специальную папку в области AppData текущего пользователя.
  2. Создать файловый ресурс в этой папке
  3. Добавить права на Все для этой конкретной общей папки и папки.
  4. Обработка резервной копии на основе этого общего ресурса.
  5. Удалите общий ресурс и сбросьте разрешения.

Если кому-то интересно, к чему относится этот вопрос: RoundhousE

0 голосов
/ 16 ноября 2009

Если вы хотите / нуждаетесь в резервном копировании базы данных, то в целом для обеспечения согласованности базы данных сервер базы данных должен быть либо полностью отключен, либо, по крайней мере, полностью находиться в режиме только для чтения.

Ваш вопрос звучит так, как будто ваши "претенденты" поставили перед вами задачу резервного копирования удаленного сервера, хотя ни одно из этих условий не выполняется. Единственный разумный ответ на такой вызов состоит в том, что это невозможно сделать.

...