SMO备份失败,错误代码1827(完整数据库)。

3

我正在使用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 开始启动数据库 'model'。
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 管理员已启动。
2020-01-20 13:43:01.02 spid10s 恢复已完成,仅为信息提示,无需进行任何操作。
2020-01-20 13:43:02.66 Server 使用 CLR 版本 v4.0.30319 从 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 初始化公共语言运行时(CLR)功能。
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 CREATE DATABASE 或 ALTER DATABASE 失败,因为结果累计数据库大小将超过每个数据库的许可限制 10240 MB。
2020-01-20 13:49:04.59 Backup 错误:3041,严重性:16,状态:1。
2020-01-20 13:49:04.59 Backup 执行命令 BACKUP DATABASE PHASIS 失败,请检查备份应用程序日志以获取详细信息。
2020-01-20 14:14:56.76 Backup 错误:3041,严重性:16,状态:1。
2020-01-20 14:14:56.76 Backup 执行命令 BACKUP DATABASE PHASIS 失败,请检查备份应用程序日志以获取详细信息。
我认为,spid51在收集所有信息后尝试执行“CREATE DATABASE”。但是,它试图将备份文件作为服务器实例的一部分,并且由于10 GB已经无法增加而导致崩溃。

有没有人有想法如何更改备份,使备份不再计入数据库限制?也许明确地给它一个新数据库或类似的东西?
Microsoft关于SMO的信息并不是很有帮助: https://learn.microsoft.com/de-de/dotnet/api/microsoft.sqlserver.management.smo.backup?redirectedfrom=MSDN&view=sql-smo-140.17283.0 编辑:当我使用Management Studio进行备份时,它可以正常工作,但我必须以编程方式使用smo。

看起来你已经达到了Express数据库的最大大小限制。 - Thom A
我不需要一个更大的数据库,只需要完整备份。 - Marcel Grüger
你不能在express中附加大于10GB的数据库,因此您需要完整版本才能这样做。 - Thom A
我觉得我在这里表达得有点不清楚,但是数据库已经挂载在一个实例中,并且仍在运行(只要我不再尝试插入更多数据)。 - Marcel Grüger
问题在于即使是修改数据库以开始备份,也会增加大小(可能只有几个字节)。您需要先将其缩小。 - Thom A
显示剩余3条评论
1个回答

0

好的,那个... 嗯... 有点尴尬。
我将超时时间从360(6分钟)提高到了3600(60分钟),然后它就不再崩溃了。所以日志条目和错误消息实际上只是让我感到困惑,并使我误入歧途。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接