如何将SQL Azure数据库复制到我的本地开发服务器?

有谁知道我可以如何将SQL Azure数据库复制到我的开发机器? 我想停止在云中开发数据库,​​但这是获取生产数据的最好方法。 我复制我的生产数据库到一个新的开发数据库,​​但我想有相同的数据库本地。

有什么build议么?

有多种方法可以做到这一点:

  1. 使用SSIS(SQL Server集成服务) 。 它只能在你的表中导入data 。 不会传输列属性,约束,键,索引,存储过程,触发器,安全设置,用户,login等。 不过,这个过程非常简单,只需通过SQL Server Management Studio中的向导即可完成。
  2. 使用SSIS和数据库创build脚本的组合。 这将使您获取数据和所有未被SSIS传输的元数据。 这也很简单。 首先使用SSIS传输数据(参见下面的说明),然后从SQL Azure数据库创build数据库创build脚本,并在本地数据库上重新播放。
  3. 最后,您可以在SQL Azure中使用导入/导出服务 。 这将数据(使用模式对象)作为BACPAC传输到Azure Blob存储。 您将需要一个Azure存储帐户,并在Azure门户网站中执行此操作。 在select要导出的数据库时,只需在Azure门户网站中按“导出”button即可。 缺点是只有手动程序,我不知道通过工具或脚本自动化这种方法 – 至less是需要点击网页的第一部分。

方法#1的手动程序(使用SSIS)如下:

  • 在Sql Server Management Studio(SSMS)中,在本地SQL实例上创build新的空数据库。
  • 从上下文菜单中select导入数据(右键单击数据库 – >任务 – >导入数据…)
  • input源的连接参数(SQL Azure)。 select“.Net Framework数据提供程序SqlServer”作为提供程序。
  • select现有的空本地数据库作为目标。
  • 按照向导 – 您将能够select要复制的表格数据。 你可以select跳过你不需要的表格。 例如,如果您将应用程序日志保存在数据库中,则可能不需要备份。

您可以通过创buildSSIS包并自动重新执行它,以便随时重新导入数据。 请注意,您只能使用SSIS导入干净的数据库,一旦您完成一次,就不能对本地数据库执行增量更新。

方法#2 (SSID数据加架构对象)非常简单。 首先执行上述步骤,然后创build数据库创build脚本(右键单击SSMS中的数据库,select生成脚本 – >数据库创build)。 然后在本地数据库上重新播放此脚本。

方法#3在这里的博客中描述: http : //dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/ 。 有一个video剪辑,将数据库内容作为BACPAC传输到Azure Blob存储。 之后,您可以在本地复制文件并将其导入到您的SQL实例。 将BACPAC导入到Data-Tier应用程序的过程如下所述: http : //msdn.microsoft.com/en-us/library/hh710052.aspx 。

我只是想添加一个dumbledad答案的简化版本,因为它是正确的。

  1. 将Azure SQL数据库导出到blob存储上的BACPAC文件。
  2. 从SQL Management Studio内部右键单击数据库,单击“导入数据层应用程序”。
  3. 系统会提示您input信息以获取Azure Blob存储上的BACPAC文件。
  4. 接下来打了几次,完成!

我觉得现在好多了。

  1. 启动SQL Management Studio
  2. 右键单击“数据库”,然后select“导入数据层应用程序…”
  3. 该向导将引导您完成连接到Azure帐户的过程,创buildBACPAC文件并创build数据库。

另外,我使用Sql Backup和FTP( https://sqlbackupandftp.com/ )来每日备份到安全的FTP服务器。 我只需从那里取出一个最新的BACPAC文件,然后将其导入到同一个对话框中,这样可以更快,更轻松地创build本地数据库。

您还可以在Windows Azurepipe理门户中检出SQL Azure Data Sync 。 它允许您检索和恢复整个数据库,包括SQL Azure和SQL Server之间的模式和数据。

这很容易。 这对我来说…就是将Azure SQL数据库放到本地机器上:

  1. 打开您的SQL Management Studio并连接到您的Azure SQL Server。
  2. select您想要放到本地机器上的数据库,然后右键单击…select“生成脚本”。 按照提示…

但是,要小心,如果你还想要数据,以及脚本,请确保在开始生成之前检查高级选项…向下滚动到“脚本数据types”,并确保您有“模式和数据“…或适合您的任何内容。

它会给你一个很好的SQL脚本文件,然后可以在你的本地机器上运行,它将创build数据库,并填充所有的数据。

请记住,在我的情况下,我没有FK或其他限制…也不是很多的数据。

我不build议这是一般的备份机制…

请试试这个: http : //mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple-database-backups-with-sql-azure/ 。

其他的select是SQL Azure数据同步 。

还有一篇博客文章是我几天前跑过去的,但是现在找不到。 我会尽快更新这个post。

关于“我无法得到SSIS导入/导出工作,因为我得到了错误”失败插入到只读列“id”“。这可以通过在映射屏幕中指定你想要的允许插入标识元素。

之后,使用SQL导入/导出向导从Azure复制到本地数据库,一切正常。

我只有SQL Server 2008 R2附带的SQL Import / Export Wizard(工作正常)和Visual Studio 2012 Express来创build本地数据库。

使用msdeploy.exe

警告: msdeploy.exe无法自行创build目标数据库,因此您需要先手动创build它。

  1. 在数据库属性页上复制连接string。 调整它,使其包含正确的密码。 数据库属性页面
  2. 获取目标数据库的连接string。
  3. 像这样运行msdeploy.exe

     "c:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -dest:dbDacFx="destination_DB_connection_string",dropDestinationDatabase=true -source:dbDacFx="azure_DB_connection_string",includeData=true -verbose 

使用SqlPackage.exe

  1. 将azure DB导出到一个bacpac包。

     "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Export /ssn:"azure_db_server" /sdn:"azure_db_name" /su:"user_name" /sp:"password" /tf:"file.bacpac" 
  2. 将软件包导入到本地数据库。

     "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb 

接受的答案已过时。 我find了更好的答案:使用导入数据层应用程序

更详细的信息请参阅这篇文章:将Azure SQL数据库还原到本地服务器

您可以尝试使用工具“SQL数据库迁移向导”。 此工具提供了从azure sql导入和导出数据的选项。

请在这里查看更多细节。

https://sqlazuremw.codeplex.com/

在SQL Server 2016 Management Studio中,获取Azure数据库到本地计算机的过程已经精简。

右键单击要导入的数据库,单击任务>导出数据层应用程序 ,然后将数据库导出到本地.dacpac文件。

在本地目标SQL Server实例中,可以导入数据层应用程序。 一旦它是本地的,你可以做像备份和恢复数据库。

下载Optillect的SQL Azure备份 – 它有15天的试用,所以它将足以移动你的数据库:)

我无法得到SSIS导入/导出工作,因为我得到了错误'插入到只读列“id”'失败。 也不能让http://sqlazuremw.codeplex.com/工作,上面的SQL Azure数据同步的链接不适合我。

但是我发现了一篇关于BACPAC文件的优秀博客文章: http ://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/

在post中的video中,博客文章的作者运行了六个步骤:

  1. 创build或转到Azurepipe理门户中的存储帐户。 您需要Blob URL和存储帐户的主要访问密钥。

  2. 博客文章build议为bacpac文件创build一个新容器,并build议使用Azure存储浏览器 。 (注意,您需要Blob URL和存储帐户的主访问密钥将其添加到Azure存储资源pipe理器。)

  3. 在Azurepipe理门户中,select要导出的数据库,然后在function区的“导入和导出”部分中单击“导出”。

  4. 最终的对话需要您的数据库的用户名和密码,blob URL和访问密钥。 不要忘记将容器包含在blob URL中并包含文件名(例如https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac )。

  5. 单击完成后,数据库将被导出到BACPAC文件。 这可能需要一段时间。 如果签入Azure存储资源pipe理器,您可能会立即看到零字节文件。 这是导入/导出服务检查它有写访问blob-商店。

  6. 完成后,可以使用Azure存储资源pipe理器下载BACPAC文件,然后在SQL Server Management Studio中右键单击本地服务器的数据库文件夹,然后select导入数据层应用程序,该数据层应用程序将启动读入BACPAC文件的向导生成Azure数据库的副本。 如果您不想先将其复制到本地,则该向导还可以直接连接到blob-store以获取BACPAC文件。

最后一步可能只能在SQL Server Management Studio的SQL Server 2012版(这是我正在运行的版本)中可用。 我没有在这台机器上检查早先的。 在博客文章中,作者使用命令行工具DacImportExportCli.exe进行导入,我相信这可以在http://sqldacexamples.codeplex.com/releases

您可以使用新的Azure移动服务执行从SQL Azure夜间备份导出到Azure存储中托pipe的.bacpac文件。 此解决scheme是100%云,不需要第三方工具,不需要本地托pipe的SQL Server实例下载/复制/备份任何东西。

大概有8个不同的步骤,但都很简单: http : //geekswithblogs.net/BenBarreth/archive/2013/04/15/how-to-create-a-nightly-backup-of-your-sql-azure的.aspx

对我来说,诀窍是开始在空白数据库上复制PK / FK /约束,然后在导入数据时临时禁用约束(请参阅https://stackoverflow.com/a/161410 )。

更确切地说:

  1. 手动创build空目标数据库;
  2. 右键单击源数据库>任务>生成脚本;
  3. 在空目标数据库上运行脚本文件(现在数据库有正确的PK / FK /约束,但没有数据);
  4. 禁用所有约束;
  5. 导入数据(右键单击目标数据库>任务>导入数据);
  6. 重新启用约束。

希望这可以帮助!

现在您可以使用SQL Server Management Studio来执行此操作。

  • 连接到SQL Azure数据库。
  • 在对象资源pipe理器中右击数据库。
  • select“任务”/“将数据库部署到SQL Azure”选项。
  • 在名为“部署设置”的步骤中,select您的本地数据库连接。
  • “下一步”/“下一步”/“完成”…

使用SQL Azure中的导入/导出服务创build.bacpac文件。

然后在另一个Stack Overflow文章中看看这个方法。

Azure SQL数据库Bacpac本地还原

如果任何人有导入使用Azure SQL Sync的DB的Bacpac的问题,Sandrino Di Mattia开发了一个非常简单的应用程序来解决这个问题。

  1. 导出你的DB的一个Bacpac
  2. 下载Di Mattia的二进制文件
  3. 有了这个控制台应用程序修复下载的Bacpac
  4. 劳克SSMS
  5. 右键单击“数据库”,然后select“导入数据层应用程序”
  6. select修复的Bacpac。

如果任何人想要一个自由有效的选项(并且不介意手动)将数据库备份到本地,那么使用内置到最新版本的Microsoft Visual Studio 2015社区版(免费)或专业版/高级版/旗舰版中的模式和数据比较function版。 它就像一个魅力!

我有Azure的BizPark帐户,没有办法直接备份数据库没有付费。 我在VS中发现这个选项。

答案取自https://stackoverflow.com/a/685073/6796187

您好我正在使用SQLAzureMW工具进行SQLAzure DB迁移和pipe理。 非常有用的一个。 它是从codeplex下载的,但目前不可用,codeplex将会closures,同样的应用程序工具现在在GttHub中可用。 这下面的链接是解释如何使用这个工具,也可以下载应用程序。

https://github.com/twright-msft/azure-content/blob/master/articles/sql-database/sql-database-migration-wizard.md