【问题标题】:Sql server SMO partial backupSql server SMO 部分备份
【发布时间】:2016-01-14 09:01:46
【问题描述】:

我在 SQL Server 2008 R2 中有一个使用简单恢复模型的数据库。

数据库包含一个文件组,大部分数据都驻留在其中(>20GB 图像)。这些图像对于应用程序并不重要。

我想使用 Sql Server SMO 从 C# 备份数据库。但我只想备份数据库结构(PRIMARY 文件组;除非必要图像外的所有内容)。我想这样做是为了保持较小的备份大小。

在我的 C# 代码中,我将备份操作设置为 BackupActionType.Files,并且我只在 DatabaseFileGroups 集合中包含 PRIMARY 文件组,因此它应该只备份数据库结构,而不是图像。

但是当我运行备份时,我得到了这个异常:

System.Data.SqlClient.SqlError:无法将主文件组备份为文件备份,因为数据库正在使用 SIMPLE 恢复模型。考虑通过指定 READ_WRITE_FILEGROUPS 进行部分备份。

我的问题是,如何使用 Sql Server SMO 从 C# 代码中指定 READ_WRITE_FILEGROUPS?该异常向我展示了如何在 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();
    }
}

【问题讨论】:

  • “但我只想备份数据库结构”......所以基本上你的问题转化为生成脚本来创建数据库?还是真的必须是没有表格内容的备份?
  • 它需要是包含表格内容但不包含图像的备份。
  • 我在 SMO 界面中看不到任何支持添加 READ_WRITE_FILEGROUPS 选项的内容。您最好使用 T-SQL 创建备份。

标签: c# sql-server smo


【解决方案1】:

解决方法很简单。 只需在 SQLSERVER 中右键单击数据库,然后在选项选项卡的属性窗口中将恢复模式更改为批量记录

【讨论】:

    【解决方案2】:

    T-SQL 的第二个解决方案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多