2011-09-24 55 views
0

是否有包含重构的SQL Server的IDE?例如,如果我在表上有一个复合主键,并且我更改了它,sql管理工作室将删除引用此主键的所有外键(它将首先发出警告)。是否有一种工具为外键生成DROP语句并重新创建它们?用于重构的Sql server ide

回答

1

我建议在VS2010中查看数据库项目类型,如果还没有的话。它具有很多使数据库重构比使用SQL Server Management Studio更容易的功能。

例如,它会进行很多构建时验证,以确保您的数据库对象不会引用不再存在的对象。例如,如果您重命名列,它会为引用旧列名的FK生成错误。此外,它具有非常方便的“比较”功能,比较数据库项目脚本&数据库,生成DIFF报告,并生成脚本以在两者之间移动所选更改(无论是DB项目还是SQL Server,反之亦然)。

我不确定它会自动处理您的组合键示例 - 换句话说,当您重命名列时,它不会修复整个项目中对该列的所有引用。但是,由于所有数据库对象都保存在项目中的脚本中,因此列重命名只是搜索&替换操作。同样,如果你犯了一个错误,你将在验证数据库结构时收到构建错误。因此,至少可以轻松找到需要更改的地点。

这里可能有更强大的工具(我听说过关于redgate的好东西),但VS2010对数据库项目类型的支持是相当不错的。

+0

可悲的是,没有数据库比较工具可以处理重构 - 只是不可能,它永远不知道它是重命名还是丢失/新列。这就是手动创建的三角洲脚本,例如100到101,101到102等。我喜欢数据库项目,但是迁移并不是他们将要处理的事情,这需要人工智能和AI注意为什么程序员会这样做变化。 – TomTom

+0

TomTom是对的。大多数重构不能被工具第二次猜测。然而,在Red Gate,我们正在开发一个功能SQL Migrations,它允许将自定义脚本添加到工具的整体知识中,从而产生更准确的脚本。这在这里有更详细的描述:http://weblogs.sqlteam.com/markc/archive/2011/08/08/sql-source-control-and-custom-change-scripts.aspx –

0

你的对象处理外键引用的方式是在创建表/约束时。 ON DELETE CASCADE只能是一种选择。您也可以将其设置为NULL或默认值。

除非我误解你的问题,它不是环境,而是指示这个的对象参数。