【问题标题】:SMO Backup fails with error 1827 (full database)SMO 备份失败并出现错误 1827(完整数据库)
【发布时间】:2020-01-20 13:40:30
【问题描述】:

我使用的是 SqlExpress 2012(我必须,别无选择)。

数据库在极少数情况下会运行满。
现在我想对整个数据库进行备份,然后截断一些表并缩小数据库。 对于备份,我使用以下代码:

public void BackupDatabase(string backupFilePath, string databaseServer, string databaseName, out string errorMessage)
{
    var connection = new ServerConnection(databaseServer);
    connection.StatementTimeout = 360;
    Backup backup = new Backup();
    backup.Devices.AddDevice(backupFilePath, DeviceType.File);
    backup.Database = databaseName;
    backup.Initialize = true;
    backup.Incremental = false;
    backup.Action = BackupActionType.Database;
    backup.SqlBackup(new Server(connection));
}

但如果我这样做,一段时间后我会收到错误消息。这是我的错误日志:

2020-01-20 13:42:54.89 spid10s 启动数据库“msdb”。
2020-01-20 13:42:54.90 spid12s 启动数据库 'mssqlsystemresource'。
2020-01-20 13:42:54.91 spid12s 资源数据库构建版本为 12.00.6108。这是个 仅供参考。无需用户操作。
2020-01-20 13:42:54.93 spid12s 启动数据库“模型”。
2020-01-20 13:42:55.69 spid12s 清除 tempdb 数据库。
2020-01-20 13:43:00.07 spid12s 启动数据库“tempdb”。
2020-01-20 13:43:00.37 spid18s Service Broker 端点处于禁用状态或 停止状态。
2020-01-20 13:43:00.37 spid18s 数据库 镜像端点处于禁用或停止状态。
2020-01-20 13:43:00.39 spid18s Service Broker manager 已启动。
2020-01-20 13:43:01.02 spid10s 恢复完成。这是个 仅供参考。无需用户操作。
2020-01-20 13:43:02.66 服务器公共语言运行时 (CLR) 功能 使用 CLR 版本 v4.0.30319 初始化 C:\Windows\Microsoft.NET\Framework64\v4.0.30319.
2020-01-20 13:43:15.65 spid51 启动数据库“TESTDB”。
2020-01-20 13:43:36.75 spid51 错误:1827,严重性:16,状态:1。
2020-01-20 13:43:36.75 spid51 创建数据库或更改数据库 失败,因为生成的累积数据库大小将超过 每个数据库的许可限制为 10240 MB。
2020-01-20 13:49:04.59 备份错误:3041,严重性:16,状态:1。
2020-01-20 13:49:04.59 Backup BACKUP 未能完成 命令备份数据库阶段。检查备份应用程序日志 详细消息。
2020-01-20 14:14:56.76 备份错误:3041, 严重性:16,状态:1.
2020-01-20 14:14:56.76 备份 BACKUP 未能完成命令 BACKUP DATABASE PHASIS。检查 备份应用程序日志以获取详细消息。

在我看来,spid51 在收集所有信息后会尝试执行“创建数据库”。但随后它尝试将备份文件作为服务器实例的一部分并崩溃,因为 10 GB 无法再增加。

有人知道如何更改备份,以便不再将备份计入数据库限制吗?也许明确地给它一个新的数据库或类似的东西?

微软关于 SMO 的信息并没有真正的帮助:https://docs.microsoft.com/de-de/dotnet/api/microsoft.sqlserver.management.smo.backup?redirectedfrom=MSDN&view=sql-smo-140.17283.0

编辑:当我使用 Management Studio 进行备份时,它可以工作,但我必须以编程方式使用 smo 进行备份。

【问题讨论】:

  • 看起来您已达到 express 数据库的最大大小限制。
  • 是的,这正是问题所在,但解决方法是什么?我不想再扩展数据库,只在截断表之前做一个备份。
  • 没有“变通办法”。如果您需要更大的数据库,则需要 SQL Server 的付费版本。
  • 我不需要一个更大的数据库,只需要一个完整的备份。
  • 您无法以 express 方式附加大于 10GB 的数据库,因此您需要一个完整版本才能执行此操作。

标签: c# sql-server backup smo


【解决方案1】:

好吧,那是……呃……有点尴尬。
我将超时时间从 360(6 分钟)提高到 3600(60 分钟),它不再崩溃了。因此,日志条目和错误消息只会让我非常困惑并误入歧途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2017-10-06
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多