我有一个在 Azure 中运行的网站,使用 Azure 数据库。然而,我的开发数据库是一个 .mdf
文件。由于 Azure 数据库中的数据不断变化,因此我希望能够获取数据快照,以便在本地 .mdf
文件中获得更新的数据表示形式。由于我的代码还将数据插入数据库,因此我无法简单地从本地计算机连接到生产数据库。
我拥有 .mdf
文件的原因是我可以将其与源代码管理中的代码一起打包。这样,当我在机器之间移动时,我就不必提供外部测试数据库(我是唯一的开发人员)。
是否可以以某种方式将 Microsoft SQL Server Management Studio 中的 SQL Server 数据库中的数据库转换为 .mdf
文件?或者有一个查询通过将数据从一个数据库复制到另一个数据库来同步数据?
我希望能够将 Azure 数据库与我的 .mdf
文件同步的原因之一是这样我就不必在源代码管理中打包(它们可能会变得相当大),但是而是在我需要 .mdf
数据库进行测试时生成一个。如果不需要的话,我宁愿没有远程测试数据库来连接以进行开发。
看来我自己的事情过于复杂了。有没有比使用 .mdf
数据库更好的方法?是否有不同的方法来复制生产数据库进行测试?
最佳答案
这就是我要做的:
- 将您的数据库存储在 SSDT 数据库项目中
- 为此,请下载 ssdt ( https://msdn.microsoft.com/data/hh297027 ),您需要拥有 Visual Studio 或可以使用 Visual Studio Express
- 导入数据库,您可以附加 .mdf 并使用导入向导获取代码(右键单击 ssdt 项目并导入 -> 数据库)
- 如果您有任何静态数据或引用数据,请使用 sp_generate_merge ( https://github.com/readyroll/generate-sql-merge ) 为每个表生成合并语句 - 将它们添加到项目中的部署后脚本中
- 当您想要部署时,请使用 SSDT 或 sqlpackage.exe 中的发布功能 - 我会确保您在推送到生产数据库之前对此进行彻底测试。
- 当您想在新机器上进行测试时,只需将代码发布到新的开发实例并开始使用它 - 您可能需要一个单独的脚本来设置一些测试数据等
这样做意味着您实际上可以跟踪源代码管理中的更改,并且您将获得一个免费自动部署系统。
这不会给你生产数据的快照,让你可以创建一个 ssis 包来复制你需要的所有表 - 但为了测试你应该能够(事实上我们很多人都这样做) )只需使用一个干净的数据库来开发/测试,并在调试问题时提取特定的数据位。
关于sql-server - 将 .MDF 文件与服务器数据库 T-SQL 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29910475/