在我的工作场所,我们有单独的Teradata数据库来管理表格和视图。 “tables”数据库具有包含数据的表,而“views”数据库仅包含视图。对角色管理对两个数据库的访问:“开发人员”有权在“表”中创建表并在“视图”中创建视图; “消费者”只能“阅读”访问“视图”数据库。
随着时间的推移,一些视图变得“糟糕”,因为它们引用的基表不再存在。这通常是在开发人员在某些分析结束时删除表并忘记删除相应视图时引起的。
问题:是否有“简单”的方法来识别不再与有效表关联的视图?
我正在考虑编写一个测试脚本,在“views”数据库中的每个视图上执行select count(*)
;如果测试失败,我会知道视图出了问题。我知道该怎么做(而且会起作用),但我想我会问是否有更好的方法。
答案 0 :(得分:2)
我写了一个方法,可用于查找损坏的视图here。通过使用存储过程,几个游标和PREPARE
语句,您可以快速测试整个数据仓库中视图的有效性。
最大的诀窍是将错误处理程序固定下来以记录错误。虽然我没有在我的网站上详细介绍错误处理程序,但如果你遇到问题,我可以向你发送一些伪代码以便找到正确的路径。