Как сделать частичное резервное копирование и восстановление базы данных? - PullRequest
1 голос
/ 12 мая 2010

Простая проблема.Я работаю над одной базой данных SQL Server, которая используется несколькими офисами.Каждый офис имеет свою собственную схему внутри этой базы данных, таким образом, разделяя базу данных на логические части.(Плюс одна схема, которая совместно используется несколькими офисами.) База данных хранится на выделенном сервере, и мы используем одну базу данных, чтобы упростить процедуру резервного копирования / восстановления.

Однако проблема заключается в том, что учетОфис может изменить большое количество данных, а затем Секретарь делает ошибку, которая требует восстановления резервной копии.К сожалению, восстановление резервной копии означает, что учетная запись потеряет свои недавно добавленные данные.

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

Итак, есть ли способ сделать резервные копии одной схемы, возможно, с помощью кода?А затем восстановить только эту схему, возможно, через код?

Ответы [ 3 ]

1 голос
/ 12 мая 2010

Вы можете создать сценарий, который копирует каждую из схем в отдельную базу данных (backup_Accounting, backup_Secretary, backup_Shared), а затем создает файл резервной копии для каждой из этих баз данных. Если вам когда-либо понадобится выполнить восстановление, вы можете восстановить файл резервной копии в соответствующую базу данных, а затем запустить сценарий для копирования данных обратно в основную БД.

1 голос
/ 12 мая 2010

Вы можете использовать файловые группы и команду частичного резервного копирования.

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

Информацию о частичном резервном копировании см. Здесь: http://msdn.microsoft.com/en-us/library/ms191539.aspx

См. Информацию о группах файлов: http://msdn.microsoft.com/en-us/library/ms179316.aspx

См. Здесь информацию о частичном восстановлении: http://msdn.microsoft.com/en-us/library/ms177425.aspx

0 голосов
/ 12 мая 2010

Невозможно сделать резервную копию и восстановить только одну схему.

Однако вы можете попробовать этот подход: восстановить всю базу данных (все схемы) в другую базу данных xyz_OLD или что-то подобное.

Затем вы можете исправить данные, используя скрипт:

UPDATE y
    SET col1=o.col1
    FROM xyz.YourTable y
        INNER JOIN xyz_Old.xyz.YourTable o ON y.PK=o.PK

INSERT INTO xyz.YourTable
        (col1, col2, col3,...)
    SELECT
        col1, col2, col3,...
        FROM xyz_Old.xyz.YourTable o
        WHERE NOT EXISTS (SELECT 1 FROM xyz.YourTable y WHERE o.PK=y.Pk)

etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...