Удалить таблицу перед восстановлением с помощью SMO

Я использую Microsoft.SqlServer.Management.Smo

Чтобы восстановить базу данных prod для dev. Но эта таблица очень большая и занимает много времени

Мой код выглядит так:

public void Restore(string path, string restore_name, RestoreOption restoreOption)
        {
            try
            {
                InitConnexion();
                if (!_smoServer.Databases.Contains(restore_name))
                {
                    var database = new Database(_smoServer, restore_name);
                    database.Create();
                }
                _targetDatabase = _smoServer.Databases[restore_name];
                _targetDatabase.RecoveryModel = RecoveryModel.Simple;
                _targetDatabase.Alter();
                Restore restore = new Restore();
                var backupDeviceItem = new BackupDeviceItem(path, DeviceType.File);
                restore.Devices.Add(backupDeviceItem);
                restore.Database = restore_name;                
                restore.ReplaceDatabase = true;
                restore.NoRecovery = false;
                restore.Action = RestoreActionType.Database;
                var fileList = restore.ReadFileList(_smoServer);    
                var dataFile = new RelocateFile();
                dataFile.LogicalFileName = fileList.Rows[0][0].ToString();
                dataFile.PhysicalFileName = _smoServer.Databases[restore_name].FileGroups[0].Files[0].FileName;    
                var logFile = new RelocateFile();
                logFile.LogicalFileName = fileList.Rows[1][0].ToString();
                logFile.PhysicalFileName = _smoServer.Databases[restore_name].LogFiles[0].FileName;    
                restore.RelocateFiles.Add(dataFile);
                restore.RelocateFiles.Add(logFile);    
                var backupHeaderInfo = restore.ReadBackupHeader(_smoServer);    
                _smoServer.KillAllProcesses(restore_name);
                restore.Complete += Restore_Complete;
                restore.PercentComplete += Restore_PercentComplete;
                restore.SqlRestoreAsync(_smoServer);
                restore.Information += Restore_Information;
                restore.Wait();
            }

    internal void InitConnexion()
    {
        if (String.IsNullOrWhiteSpace(_sqlAccess.usernameSql))
        {
            _sqlConnection = new ServerConnection(_sqlAccess.uriSql);
        }
        else
        {
            _sqlConnection = new ServerConnection(_sqlAccess.uriSql, _sqlAccess.usernameSql, _sqlAccess.passwordSql);
        }
        _sqlConnection.StatementTimeout = 6000;
        _smoServer = new Server(_sqlConnection);
    }

Работает нормально. Но у меня было два стола, которые слишком велики. Как 60Go, 90% базы данных. И мне это не нужно... Я ищу способ удалить эту таблицу из восстановления, чтобы ускорить.

Я могу манипулировать объектом базы данных после восстановления и удалить таблицу... Но я хочу сделать это до восстановления.

Есть ли способ сделать это? Любая команда, которую я не знаю о Smo, которая помогает игнорировать конкретную таблицу?

0 ответов

Другие вопросы по тегам