2

我需要为我们的一些 .Net 应用程序创建一个测试环境,而其中一些应用程序只使用了一些相当大的数据库的一小部分。我的想法是创建一个“小型”数据库,它只保存应用程序正在使用的表、存储过程、视图等。

这有望加快这些“小型”数据库的刷新时间,但是我看不到这样做的简单方法,是否有一个选项可以在 SQL Server 中轻松执行此操作,或者通过 T-SQL 脚本执行此操作。

目前我最好的方法是从数据库生成一个脚本,并且只选择我需要的表并选择“仅数据”选项,然后在“小型”数据库上运行这些表以获取最新数据。但是,您可以想象这是一个漫长的过程,我更愿意使用自动化程度更高的东西。非常感谢您提供的任何建议。

谢谢,迈克尔·暴风雨

4

2 回答 2

1

对于开发数据库,​​我们只保留生产数据库的结构副本和一些数据。我们定期将数据库与比较和同步数据库结构的工具进行比较(现在有很多这样的工具 - 我们使用 redgate 的工具)。

对于 prod_copy 数据库,我们只需对 prod db 进行备份恢复,然后在需要时截断最大的表并缩小数据库。

如果您想完全自动化该过程,您可以编写 SQL 比较或 SQL 数据比较脚本。我不确定其他 SQL 工具供应商是否有这样的选择。

于 2013-10-31T11:49:24.463 回答
1

数据库镜像可以解决这个问题,只在测试数据库上发布您想要的项目/文章,您可以在需要时暂停和重新启动镜像。
SSMS 脚本作为另一种方法是转到您的 SSMS 右键单击​​要复制到测试数据库的对象和脚本作为创建,为您要移动的所有项目执行此操作,以正确的顺序保存脚本,即(创建表 1 和然后关联对象)在一个文件中并在目标数据库上运行它。
由于只有您知道要转移哪些项目来测试数据库,我认为很难找到适合您需求的脚本。
使用 SCRIPT AS 选项的一些有用提示
要为对象生成 sql 脚本:

  • SQL Server Management Studio > 数据库 > Database1 > 任务 >
    生成脚本...
  • SQL Server 脚本向导将启动,
    您可以选择要导出到脚本的对象和设置
  • 默认情况下,不包括索引和触发器的脚本,因此请确保打开它们(以及您感兴趣的任何其他内容)。

要从表中导出数据:

  • SQL Server Management Studio > 数据库 > Database1 > 任务 > 导出数据...
  • 选择源数据库和目标数据库
  • 选择要导出的表格 •确保选中每个表格的“身份插入”复选框,以免创建新身份。

然后创建新数据库,运行脚本来创建所有对象,然后导入数据。

于 2013-10-31T11:44:52.663 回答