2016-01-14 140 views
1

我在SQL Server 2008 R2中有一個數據庫,它使用簡單恢復模式。Sql服務器SMO部分備份

數據庫包含一個文件組,其中包含大量數據(大於20GB的圖像)。這些圖像對於應用程序並不重要。

我想使用Sql Server SMO從C#備份數據庫。但我只想備份數據庫結構(PRIMARY文件組;除了非本質映像以外的所有內容)。我想這樣做是爲了保持較小的備份大小。

在我的C#代碼,我的備份操作設置爲BackupActionType.Files,而我只包括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.

我的問題是,我怎麼能指定從內C#代碼READ_WRITE_FILEGROUPS,使用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 在選項標籤改變恢復模式的數據庫,並在屬性窗口分辯單擊要大容量日誌

-1

謝勝利解決方案通過T-SQL:

USE [master] 
GO 
ALTER DATABASE [databasename] SET RECOVERY BULK_LOGGED WITH NO_WAIT 
GO