由于无法找到相关性,无法删除视图

Unable to drop view, due to unfindable dependency

我正在追踪 SQLCMD 迁移脚本中删除未使用的对象时的错误。

我收到的错误如下:

Msg 208, Level 16, State 1, Server XXXXXXXXXXX\XXX_DEV, Procedure vwEmployeeCompleteAll, Line 47
Invalid object name "vwTeamsLatest".

有问题的脚本如下所示:

USE [DatabaseName]
GO

DROP PROCEDURE IF EXISTS dbo.spPrepareDischarge
DROP VIEW IF EXISTS ....
/*a handful of other views being dropped*/
DROP VIEW IF EXISTS dbo.vwTeamsLatest

有趣的是,vwEmployeeCompleteAll 不依赖于 vwTeamsLatest。 起初我手动遍历对象图几次以验证我没有在向下级联中忽略它,然后使用 ApexSQL 分析器进行双重检查。从两个角度来看,两个文件都没有依赖另一个文件。

在此之后,我对 vwTeamsLatest 进行了全文搜索,但它没有出现在任何使用过的视图、存储过程或函数中。

我对这个错误消息的解释有误吗,vwEmployeeCompleteAll 不是去挖掘的正确位置?

使用的系统是SQLServer 2017

睡个好觉让我能够拉开距离并重新思考我的方法。

当然,如果它是 vwTeamsLatest 的依赖项,那就是导致问题的原因。如果此视图没有任何其他依赖于它的对象,我将能够删除它。

罪魁祸首是 co-worker,他将使用过时视图的函数更新为新视图,但忘记在升级脚本中更新此标量函数。所以源文件和实际数据库不同步。一旦我更新了函数,迁移 运行 就顺利了。