将.MDF文件与服务器数据库T-SQL同步

时间:2015-04-28 04:41:45

标签: sql-server database tsql azure

我有一个使用Azure数据库在Azure中运行的网站。然而,我的开发数据库是.mdf文件。由于Azure数据库中的数据不断变化,我希望能够获取数据的快照,以便在本地.mdf文件中更新地表示数据。因为我的代码也将数据插入数据库,所以我不能简单地从本地机器连接到生产数据库。

我有.mdf文件的原因是因为我可以将其与源代码管理中的代码打包在一起。这样,当我在机器之间移动时,我不必提供外部测试数据库(我是唯一的开发人员)。

是否有可能以某种方式将Microsoft SQL Server Management Studio中的SQL Server数据库中的数据库转换为.mdf文件?或者有一个查询通过将数据从一个数据复制到另一个数据库来同步数据?

我希望能够将Azure数据库与我的.mdf文件同步的原因之一是我不需要在源代码控制中打包(它们可以变得非常大),而是生成任何一个我需要一个.mdf数据库进行测试。如果我不需要,我宁愿没有远程测试数据库来连接开发。

似乎我对自己有过复杂的事情。有没有比使用.mdf数据库更好的方法?是否有不同的方法来复制生产数据库以进行测试?

1 个答案:

答案 0 :(得分:3)

这就是我要做的事情:

  • 将数据库存储在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)为每个表生成合并语句 - 将这些添加到项目中的post deploy脚本
  • 如果要部署,请使用SSDT中的发布功能或sqlpackage.exe - 我会确保在推送到生产数据库之前对其进行彻底测试。
  • 如果要在新计算机上进行测试,只需将代码发布到新的dev实例并开始使用它 - 您可能希望有一个单独的脚本来设置一些测试数据等。

这样做意味着您可以实际跟踪源代码管理中的更改,并获得 FREE 自动部署系统。

这不会给你带来生产数据的快照,为了得到你可以创建一个复制你需要的所有表的ssis包 - 但是为了测试你应该能够(事实上我们很多人都这样做) )当我们调试问题时,只需使用干净的数据库来开发/测试并且只需下拉特定的数据位。