我正在使用MS SQL Server数据库并使用大量视图(用于O / R映射器)。有点烦恼是我想
但遇到的问题是每当我想要时,例如向表中添加一列,我必须首先删除引用该表的所有视图,更新表,然后重新创建视图,即使视图不需要更新。这使我的更新脚本更长,并且,在源控制系统中查看差异时,更难以看到实际的相关更改是什么。
有没有更好的方法来解决这个问题?
我还需要能够使用简单且可源代码控制的sql更新。 SQL Server Management Studio中包含的代码生成器会很有用,但我遇到了SQL Server Management Studio的问题,因为它倾向于创建不指定某些索引或(默认)约束的名称的代码。但是当我在不同的系统上运行我的脚本时,我希望有相同的dbs,包括所有约束的名称等,这样我在以后更新这些约束时就不必跳过循环了。
所以也许一个更智能的SQL代码生成器可以解决方案吗?
我的工作流程现在是:
alter table
语句cannot ALTER 'XXX' because it is being referenced by object 'YYY'
。”的错误陈述。create
代码drop
语句,在drop
语句是否产生错误并重复这让我很烦,但如果我想继续使用架构绑定和脚本更新,也许我只需要忍受它......
答案 0 :(得分:3)
通过查询一些动态管理功能和系统视图来查找依赖项,您至少可以消除“检查是否出现错误”步骤。 This article给出了如何做到这一点的正确解释。除此之外,我认为你是对的,你不能吃蛋糕,也不能用图案装订来吃它。
另请注意,删除/创建视图会导致您丢失在这些对象上授予的任何权限,因此这些权限也应包含在您的脚本中。