SQL 移动数据库文件后到 Azure 的服务器备份停止工作

SQL Server backup to Azure stopped working after moving DB files

我在本地 SQL Server 2014 中有一个数据库。对于该数据库,我有一个备份到使用 smart_admin.sp_set_db_backup 过程配置的 Azure 存储。

最近我不得不将数据库文件从一个磁盘移动到另一个磁盘。我分离数据库,移动文件,重新附加它。

之后我的备份停止工作。函数smart_admin.fn_backup_db_config表示数据库备份记录存在但数据库标记为is_dropped = 1

为此数据库启用或禁用备份的任何尝试都失败并出现错误:

SQL Server Managed Backup to Windows Azure cannot configure the database, 'DATABASE_NAME', because it either does not exist or is offline.

有什么方法可以删除备份配置信息并创建一个新配置信息?我发现的一个想法是重命名数据库,但我不能在生产中这样做。

Managed Backups - is_dropped flag set to Yes after detaching database and reattaching DB

重命名数据库并重新设置托管备份。

Reference

正如我之前提到的,不允许我在 Production 上重命名数据库。所以我找到了它被标记为丢弃的地方并更改了值。那有帮助。数据库的自动备份再次开始工作。 IMO 发生的事情看起来像是 SQL Server 2014 中的错误。

use msdb;
go

update [dbo].[autoadmin_managed_databases]
set drop_date = null
where [db_name] = '<DROPPED_DATABASE_NAME>'
go

很接近,但对于给定的 db_nameautoadmin_managed_databases 中可以有多个记录。您需要获取最后一条记录,即最大 autoadmin_id 的记录。我选错了,SQL 服务器在我 运行 smart_admin.sp_set_db_backup 或 15 分钟间隔 运行.

后重新填充了 drop_date
use msdb;
go

update [dbo].[autoadmin_managed_databases]
set drop_date = null
where [autoadmin_id]= (select max(autoadmin_id)
                       from [dbo].[autoadmin_managed_databases] 
                       where db_name = '<DROPPPED_DATABASE_NAME>')
go