由于无法找到相关性,无法删除视图
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,他将使用过时视图的函数更新为新视图,但忘记在升级脚本中更新此标量函数。所以源文件和实际数据库不同步。一旦我更新了函数,迁移 运行 就顺利了。
我正在追踪 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,他将使用过时视图的函数更新为新视图,但忘记在升级脚本中更新此标量函数。所以源文件和实际数据库不同步。一旦我更新了函数,迁移 运行 就顺利了。