我在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();
}
}
「但我只想要備份的數據庫結構「......所以基本上你的問題轉化爲生成腳本來創建數據庫?還是它真的必須是沒有表格內容的備份? –
它需要是包含表格內容但沒有圖像的備份。 – Ove
我在SMO界面中看不到任何支持添加READ_WRITE_FILEGROUPS選項的內容。您最好使用T-SQL創建備份。 –