【发布时间】:2009-12-31 19:59:31
【问题描述】:
我正在尝试设置一个测试数据库来运行自动化测试。我知道理想情况下我们应该使用模拟对象,但这是一个旧应用程序,这样做并不像应有的那么容易。数据库中的逻辑太多了。
无论如何,足够的背景故事。我得到了一个干净的数据库设置,测试可以加载已知数据,因此结果也是已知的。
在测试开始时,将运行一个 .sql 脚本来清空表,然后用测试数据填充它们。我看到的问题与其说是保持数据库结构同步,不如说它们不会发生太大变化(尽管那也很好),而是在开始时将所有 procs/functions 等从 dev 移动到 test测试。
是否有可以执行的 SQL 命令来执行此操作?要从 dev db 中读取 proc,并将其复制到 test db?
编辑:我实际上发现使用 SQL 管理对象效果很好。
唯一的问题是,如果有人重命名了一个项目,sql server 不会更新内部引用,它是在旧名称下创建的。有没有办法解决这个问题?
【问题讨论】:
-
两台服务器是否相连?还是两个数据库都在同一台服务器上?换句话说,我们可以假设一个 SQL 脚本可以访问两个数据库吗?
-
同一个服务器,不同的数据库。
-
重命名操作使用 sp_rename,它不会触发任何 DDL 触发器,因此没有简单的方法来记录这些。但是根据您要完成的工作,为什么不只是
DROPall 在从 dev 数据库复制之前测试数据库中的函数/过程? -
@Aaron,测试数据库是空的,但发生的事情是因为重命名不能解决根本问题。当您编写proc“新名称”时,它被创建为旧名称。真傻。
标签: sql-server stored-procedures copy smo