2016-01-14 5 views
1

У меня есть база данных в SQL Server 2008 R2, в которой используется простая модель восстановления.Sql сервер SMO частичное резервное копирование

База данных содержит файловую группу, в которой находится основная часть данных (> 20 ГБ изображений). Эти изображения не являются критическими для приложения.

Я хочу сделать резервную копию базы данных с C# с помощью SQL Server SMO. Но я хочу только создать резервную копию структуры базы данных (первичная файловая группа, все, кроме несущественных изображений). Я хочу сделать это, чтобы размер резервного копирования был небольшим.

В моем коде на C# я устанавливаю действие резервного копирования на BackupActionType.Files, и я включаю в себя только основную файловую группу PRIMARY внутри коллекции DatabaseFileGroups, поэтому она должна сохранять только структуру базы данных, а не изображения.

Но когда я запускаю подпорку, я получаю это исключение:

System.Data.SqlClient.SqlError: The primary filegroup cannot be backed up as a file backup because the database is using the SIMPLE recovery model. Consider taking a partial backup by specifying READ_WRITE_FILEGROUPS.

Мой вопрос, как я могу указать READ_WRITE_FILEGROUPS из внутри C# код, с помощью SQL Server SMO? Исключение показывает мне, как это сделать в T-SQL, но я хочу сделать то же самое в C#.

Вот код, я использую:

class Program 
{ 
    static string DbName = PATH_TO_DATABASE; 
    static string connString = CONNECTION_STRING; 

    static void Main(string[] args) 
    { 
     ServerConnection serverConn = new ServerConnection(); 
     serverConn.ConnectionString = connString; 
     Server server = new Server(serverConn); 

     Backup backup = new Backup() { Database = DbName }; 

     backup.Action = BackupActionType.Files; 
     backup.DatabaseFileGroups.Add("PRIMARY"); 
     backup.Devices.AddDevice("D:\\backup.bak", DeviceType.File); 

     backup.Initialize = true; 
     backup.ContinueAfterError = false; 
     backup.Incremental = false; 

     backup.Complete += (snd, e) => { Console.WriteLine("Complete"); }; 
     backup.PercentComplete += (snd, e) => { Console.WriteLine("Percent " + e.Percent); }; 

     backup.SqlBackup(server); 

     serverConn.Disconnect(); 
    } 
} 
+0

«Но я только хочу сделать резервную копию структуры базы данных «... Итак, в основном ваш вопрос переводит на создание сценария для создания базы данных? Или действительно ли это должна быть резервная копия без содержимого таблицы? –

+0

Должна быть резервная копия, содержащая содержимое таблицы, но без изображений. – Ove

+0

Я ничего не вижу в интерфейсе SMO, который поддерживает добавление опции READ_WRITE_FILEGROUPS. Возможно, вам лучше создать резервные копии с использованием T-SQL. –

ответ

1

решение очень простое. Только в SQLSERVER Rigth щелкните по базе данных и в окне свойств в закладке Параметр Режим изменения восстановления Для Bulk протоколированием

-1

secound Решение по T-SQL:

USE [master] 
GO 
ALTER DATABASE [databasename] SET RECOVERY BULK_LOGGED WITH NO_WAIT 
GO 
Смежные вопросы