【发布时间】:2010-03-09 17:24:36
【问题描述】:
在表“A”上,通过 FK 到“A.Id”依赖于大约 30 个其他表。
对于集成测试,我必须删除表并重新创建它以创建定义的状态。由于依赖对象,它们似乎无法删除和重新创建表。错误信息是:
无法删除对象“dbo.A” 因为它被 FOREIGN 引用 KEY约束
问题:
- 如何删除并重新创建表“A”?
- (或)有没有办法在全局范围内关闭模式依赖关系?
- (或)有什么方法可以在删除和恢复表“A”之前备份(所有!)依赖关系,然后再恢复所有依赖关系?
【问题讨论】:
-
为什么不使用单独的数据库进行集成测试,每次都从头开始生成整个状态?
-
数据库太大了(几百个表和很多依赖对象)。这样一来,每个集成测试将花费大约 45 秒 +x 仅用于启动时间,而无需任何实际测试。此外,一些表包含数据。 (没有任何自定义数据的数据库转储总量约为 35MB)。我们将有许多个集成测试,我们希望在每次签入时使用集成服务器执行这些测试。
-
每个集成状态是否需要相同的数据库初始状态,或者您是否可以支付一次启动费用并让每个测试撤消它可能对状态所做的任何临时更改?
-
支付一次启动罚款是一个想法。要“倒回”更改,想法是重新创建表 + 一组定义的数据。 (它巨大的遗留应用程序,这是我们迄今为止最好的。目标是单元测试,但我们目前只能达到集成测试。)
标签: sql-server sql-server-2005 tsql sql-server-2008