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

Sql server 将.MDF文件与服务器数据库T-SQL同步,sql-server,database,tsql,azure,Sql Server,Database,Tsql,Azure,我有一个在Azure中运行的网站,使用Azure数据库。然而,我的开发数据库是一个.mdf文件。由于Azure数据库中的数据不断变化,我希望能够抓取数据的快照,以便在本地.mdf文件中有更新的数据表示形式。因为我的代码还将数据插入数据库,所以我不能简单地从本地机器连接到生产数据库 我之所以有一个.mdf文件,是因为我可以在源代码管理中将其与代码打包在一起。这样,当我在机器之间移动时,就不必提供外部测试数据库(我是唯一的开发人员) 是否可以以某种方式将Microsoft SQL Server Ma

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

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

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

我希望能够将Azure数据库与我的
.mdf
文件同步的原因之一是,我不必在源代码管理中打包(它们可能会变得非常大),而是在需要
.mdf
数据库进行测试时随时生成一个。如果不需要的话,我宁愿不要连接到远程测试数据库进行开发


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

这就是我要做的:

  • 将数据库存储在SSDT数据库项目中
  • 要做到这一点,请下载ssdt(),您需要使用visual studio或可以使用visual studio express
  • 导入数据库时,可以附加.mdf并使用导入向导导出代码(右键单击ssdt项目并导入-->数据库)
  • 如果有任何静态数据或引用数据,请使用sp_generate_merge()为每个表生成一个merge语句-将它们添加到项目中的部署后脚本中
  • 当您想要部署时,请使用SSDT或sqlpackage.exe中的发布功能-我会确保在推送到生产数据库之前对其进行彻底测试
  • 当您想在新机器上测试时,只需将代码发布到新的dev实例并开始使用它—您可能需要一个单独的脚本来设置一些测试数据等
这样做意味着您可以实际跟踪源代码管理中的更改,并获得一个免费的自动部署系统

这不会为您提供生产数据的快照,您可以创建一个ssis包来复制您所需的所有表-但是对于测试,您应该能够(事实上我们中的许多人都是这样做的)使用干净的数据库来开发/测试,并在调试问题时提取特定的数据位