编写 SQL Server 生产数据库副本到测试环境的脚本

Kor*_*esh 6 sql-server sql-server-2014 copy

我们正在我们的项目中引入持续集成,我们决定使用新的生产数据自动刷新我们的测试数据库实例。

我目前正在寻找最佳方法,以避免任何生产中断或减速。

我首先想通过sqlcmd实用程序从命令行使用备份/恢复命令......

但它似乎有问题,因为它仅生成一个.bak文件,尽管该文件仍与 .mdf/.ldf 文件“链接”。因此,在我们的测试环境中恢复它时,找不到这些.mdf/.ldf文件。

然后我继续在恢复命令中指定一个“WITH MOVE”选项,以便通过网络共享指定.mdf/.ldf文件的位置,但我认为生产服务器锁定这些文件并防止从测试服务器读取它们。

所以基本上,你知道一种直接(有效)的方法来将数据库转储到单个文件中,以便在我们的测试环境中轻松加载它吗?
当然不会破坏生产环境。

编辑:

生产和测试 SQL Server 版本都是 12.0.2000。

但我首先测试从生产加载到本地开发 SQL Server Express(也是 v12.0.2000)

小智 5

但它似乎有问题,因为它只生成一个 .bak 文件,尽管该文件仍然与 .mdf/.ldf 文件“链接”。因此,在我们的测试环境中恢复它时,找不到这些 .mdf/.ldf 文件。然后我继续在恢复命令中指定一个“WITH MOVE”选项,以便通过网络共享指定 .mdf/.ldf 文件的位置,但我认为生产服务器锁定这些文件并防止对它们进行任何读取测试服务器。

这整个声明并没有真正的意义。备份文件未“链接”到 mdf/ldf 文件,它包含该数据库的文件,以便在恢复时重新创建它们。当您在另一台服务器上恢复它们​​时,您添加WITH MOVE并指定您希望 mdf/ldf 文件存储在该服务器上的位置。它们根本不会链接回备份的原始位置。

使用备份是刷新开发环境的最常用方法。您通常会根据您的备份在生产中的完成方式(例如完整/差异/日志或仅完整/差异)来确定当前您可以将数据保留在开发中(如果需要)。