现在我有100多个视图,其中有的视图调用了其它的视图(也就是说视图之间有依赖关系),当我在sql server中使用批量生成的sql脚本来创建这些视图,然后部署执行这些创建视图的sql脚本的时候,因为sql脚本是按顺序来执行的,所以导致当我执行前面的创建视图的sql脚本时,由于用到了后面的视图,但后面的视图还没有创建,所以就导致报错:比如说找不到 视图 等,我想问问大家有什么好的方法来解决这种问题,因为视图太多了,不可能一个个的去找出每个视图之间的依赖关系后再排序之后来执行。

解决方案 »

  1.   

    系统表sysdepends可查看视图之间的关系--以下可查出那些视图是依靠视图创建的
    select * from sysobjects a where type='V'
    and exists(select * from sysdepends b where id=a.id and 
                   exists(select * from sysobjects where type='V' and id=b.depid))--以下可查出视图与相关用于创建视图的名称
    select object_name(id),object_name(depid) from sysdepends  b where exists(select * from sysobjects where type='V' and id=b.depid)