【发布时间】:2009-09-25 16:50:41
【问题描述】:
我想清除我的 SqlServer 实例上的数据库架构。我应该使用什么 tsql?
架构是指表、约束等。我希望结果与创建新数据库时的结果相似,但我不想实际删除并创建数据库。
原因:
对于那些好奇的人,我需要清空架构而不丢弃,因为数据库被隔离以进行单元测试。在运行我的测试之前,会保存数据库的快照。每次测试运行后,都会恢复此快照。如果我将数据库操作保持在数据库范围内,我只能确保跨单元测试的状态一致。删除/创建数据库超出了 db 的范围(它在 master 的范围内)。
在这种情况下,我需要断言当模式为空时会发生预期的事情。通过 sql 清空模式可以保持测试方法的一致性:基本上对 db 做任何你想做的事情,练习它,恢复它。
Raj More 的回答让我开始了。我希望有人可以缩短流程。
【问题讨论】:
-
您能否详细说明为什么不能删除数据库并创建一个新数据库?数据库中是否有任何要保存的内容,例如用户主体、权限、维护计划、服务和合同等非架构绑定对象等?
-
更新了我的问题,请参阅“为什么:”
标签: sql sql-server tsql