Как мне убедиться, что все данные восстановлены с помощью SMO? - PullRequest
0 голосов
/ 03 июля 2019

Восстановление, выполненное с кодом C # с использованием объектов SMO, восстанавливается нормально, когда исходная база данных находится в режиме ПРОСТОГО восстановления.У нас возникли проблемы с одной базой данных, когда при восстановлении пропустил весь контент из определенной таблицы, где все данные были вставлены поздно в процессе.База данных оказалась в режиме восстановления BULK LOGGED.После переключения на SIMPLE и создания новой резервной копии, она восстановилась нормально, используя наш код.

Мы пробовали разные параметры для объекта восстановления, но не нашли ни одного, который бы решал проблему.У нас сложилось впечатление, что восстановление игнорирует данные в журнале.

Базовое восстановление выглядит следующим образом:

sqlServer = new Server(new ServerConnection(instanceName));
restore = GetRestore();
restore.PercentComplete += PercentCompleteAction;
restore.Complete += CompleteAction;
restore.SqlRestore(sqlServer);

функция GetRestore в основном реализована так:

restore = new Restore();
var deviceItem = new BackupDeviceItem(backupFileName, DeviceType.File);
restore.Devices.Add(deviceItem);
restore.Database = newDatabaseName;
restore.NoRecovery = false;
restore.Action = RestoreActionType.Database;
restore.ReplaceDatabase = false;
return restore;

Нет сообщений об ошибках - просто отсутствует содержимое в одной таблице.

Добавлена ​​попытка: я угадал решение ниже, но это не помогло:

restore.ReplaceDatabase = false;
restore.NoRecovery = true;
restore.Action = RestoreActionType.Database;
restore.SqlRestore(sqlServer);
restore.ReplaceDatabase = true;
restore.NoRecovery = true;
restore.Action = RestoreActionType.Log;
restore.SqlRestore(sqlServer);
restore.ReplaceDatabase = true;
restore.NoRecovery = false;
restore.Action = RestoreActionType.Files;
restore.SqlRestore(sqlServer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...