我们上周升级到了 SQL Server 2016 SP1 和 SSMS 18.2。今天,我尝试在数据库中执行 DML,但收到以下错误消息:
消息 208,级别 16,状态 1,过程 backup_objects,第 17 行 [批处理启动第 9 行] 对象名称“msdb.dbo.changelog”无效。
我无法在实例的任何数据库中找到 backup_objects 或 msdb.dbo.changelog,所以我不知道如何或为何调用 backup_object。
知道可能是什么原因造成这种情况以及如何解决它吗?
答案1
我搞明白了。以前的 DBA 实施了一个数据库触发器来记录 DDL 更改。触发器写入 msdb.dbo.changelog 表。当我们将数据库从 2008 转换为 2016 时,该表没有移至新实例,因为它在 msdb 中,而不是用户数据库中。SSDT 在运行 DDL 之前禁用了触发器,因此它工作正常。