如何在使用模式绑定和经常更新时处理数据库模式更新

Ben*_*ehn 6 sql-server version-control code-generation

我正在使用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'." 的错误声明.
  • 使用SQL Server Managment Studio编写create引用对象的代码
  • drop在alter语句之前插入一条语句,然后在之后创建语句
  • 检查drop语句是否创建错误并重复

这让我很烦,但如果我想继续使用架构绑定和脚本更新,我可能只需要忍受它...

Joe*_*lli 3

您至少可以通过查询一些动态管理函数和系统视图来查找依赖项来消除“检查是否出现错误”步骤。本文对如何做到这一点给出了很好的解释。除此之外,我认为你是对的,你不能通过模式绑定鱼与熊掌兼得。

另请记住,删除/创建视图将导致您失去授予这些对象的任何权限,因此这些权限也应包含在您的脚本中。