How do I copy SQL Azure database to my local development server?
有人知道我如何将SQL Azure数据库复制到我的开发机器上吗?我想停止花钱在云中建立一个开发数据库,但这是获取生产数据的最佳方法。我将我的生产数据库复制到一个新的开发数据库,但我希望在本地拥有相同的数据库。
有什么建议吗?
有多种方法可以做到这一点:
方法1(使用SSIS)的手动程序如下:
- 在SQL Server Management Studio(SSMS)中,在本地SQL实例上创建新的空数据库。
- 从上下文菜单中选择导入数据(右键单击数据库->任务->导入数据…)
- 键入源(SQL Azure)的连接参数。选择".net framework data provider for sqlserver"作为提供程序。
- 选择现有的空本地数据库作为目标。
- 按照向导操作--您将能够选择要复制的表数据。您可以选择跳过任何不需要的表。例如,如果将应用程序日志保存在数据库中,那么备份时可能不需要它。
您可以通过创建SSIS包并在任何时候重新导入数据来自动执行它。请注意,只能使用ssis将其导入到干净的数据库,一旦完成一次,就不能对本地数据库进行增量更新。
方法2(ssid数据加上模式对象)非常简单。首先执行上述步骤,然后创建数据库创建脚本(righ单击SSMS中的数据库,选择生成脚本->数据库创建)。然后在本地数据库上重新播放此脚本。
方法3在以下博客中描述:http://dacguy.wordpress.com/2012/01/24/sql azure importexport service has hit production/。有一个视频剪辑,它将DB内容作为bacpac传输到Azure Blob存储。之后,您可以在本地复制该文件并将其导入到SQL实例中。将bacpac导入数据层应用程序的过程如下:http://msdn.microsoft.com/en-us/library/hh710052.aspx。
我只想添加邓布利达答案的简化版本,因为它是正确的。
将Azure数据库数据复制到本地数据库:现在可以使用SQL Server Management Studio执行以下操作:
- 连接到SQL Azure数据库。
- 右键单击对象资源管理器中的数据库。
- 选择"tasks"/"deploy database to sql azure"选项。
- 在名为"部署设置"的步骤中,连接本地SQL Server并创建新数据库。
"下一个"/"下一个"/"完成"
在SQL Server 2016 Management Studio中,已简化将Azure数据库获取到本地计算机的过程。
右键单击要导入的数据库,单击任务>导出数据层应用程序,然后将数据库导出到本地.dacpac文件。
在本地目标SQL Server实例中,可以右键单击"数据库>导入数据层应用程序",一旦它是本地的,就可以执行备份和还原数据库等操作。
我觉得现在容易多了。
另外,我使用SQL备份和ftp(https://sqlbackupandftp.com/)每天备份到安全的ftp服务器。我只需从那里提取一个最新的bacpac文件,并将其导入到同一个对话框中,这样就可以更快、更容易地创建本地数据库。
您还可以在Windows Azure管理门户中签出SQL Azure数据同步。它允许您检索和恢复整个数据库,包括SQL Azure和SQL Server之间的架构和数据。
这很容易。这对我很有用……就把一个Azure SQL数据库放到您的本地计算机上而言……:
但是,如果您还需要数据和脚本,请务必在开始生成之前检查高级选项…向下滚动到"要编写脚本的数据类型",并确保您有"模式和数据"…或适合您的任何内容。
它将提供一个很好的SQL脚本文件,然后可以在本地计算机上运行,它将创建数据库并用所有数据填充它。
在我的例子中,我没有fk或其他约束……而且,它没有很多数据。
我不建议将此作为一般的备份机制…
使用
注意:
运行
1 | "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 |
使用
将Azure DB导出到bacpac包。
1 | "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" |
将包导入本地数据库。
1 | "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb |
请尝试以下操作:http://mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple database backups with sql azure/。
另一种选择是SQL Azure数据同步。
几天前我又浏览了一篇博文,但现在找不到了。我一找到这篇文章就更新。
无法使SSIS导入/导出工作,因为出现了"插入只读列"id"失败"错误。我也不能让http://sqlazuremw.codeplex.com/工作,上面的链接到SQL Azure数据同步也不适用于我。
但是我发现了一篇关于bacpac文件的优秀博客文章:http://dacky.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/
在帖子中的视频中,博客作者经历了六个步骤:
创建或转到Azure管理门户中的存储帐户。您需要Blob URL和存储的主访问密钥帐户。
博客建议为bacpac文件制作一个新的容器,并建议使用Azure存储探险家。(N.B.您需要Blob URL和存储的主访问密钥用于将其添加到Azure存储资源管理器的帐户。)
在Azure管理门户中选择要使用的数据库导出并单击的"导入和导出"部分中的"导出"丝带。
结果对话框需要您的用户名和密码数据库、Blob URL和访问键。别忘了包括blob url中的容器并包含文件名(例如https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac)。
单击"完成"后,数据库将导出到bacpac文件。这可能需要一段时间。您可能会看到一个零字节的文件出现如果您签入Azure存储资源管理器,请立即执行。这就是导入/导出服务检查它是否具有对博客商店。
完成后,您可以使用Azure存储资源管理器下载bacpac文件,然后在SQL Server Management Studio中右键单击本地服务器的数据库文件夹,然后选择导入。将启动向导的数据层应用程序,该向导读取bacpac文件以生成您的Azure数据库的副本。巫师也可以直接连接到blob存储区以获取bacpac如果您不想先在本地复制该文件,请使用该文件。
最后一步可能只在SQL Server Management Studio的SQL Server 2012版本中可用(这是我正在运行的版本)。我这台机器上没有早点的要检查的。在博客文章中,作者使用命令行工具dacimportexportcli.exe进行导入,我相信可以在http://sqldacexamples.codeplex.com/releases上找到。
关于"我无法让SSIS导入/导出工作,因为我收到错误"无法插入只读列"id"。"这可以通过在映射屏幕中指定您希望插入标识元素来绕过。
之后,使用SQL导入/导出向导从Azure复制到本地数据库,一切都正常。
我只有随SQL Server 2008 R2(工作正常)和Visual Studio 2012 Express一起提供的SQL导入/导出向导来创建本地数据库。
接受的答案已过期。我找到了一个更好的答案:使用导入数据层应用程序
更多详细信息,请参阅本文:将Azure SQL数据库还原到本地服务器
您可以使用工具"SQL数据库迁移向导"进行尝试。此工具提供从Azure SQL导入和导出数据的选项。
请在这里查看更多详细信息。
https://sqlazuremw.codeplex.com网站/
我总是使用导入/导出功能,这似乎是最简单的功能之一。
步骤1:
从Azure实例获取备份,如下所示,选择数据库→右键单击→任务→导出数据层应用程序。
步骤2:为备份文件指定一个特定的名称并将其保存到所需的位置
步骤3:就是这样,您已经将数据库从SQL实例备份到本地。让我们把它恢复到本地。将备份的数据库复制到C驱动器。现在打开具有管理员权限的PowerShell并导航到C驱动器
步骤4:让我们下载PowerShell脚本以删除主密钥removeMasterKey。PS1将脚本放在同一个驱动器上,在本例中是它的C。
第五步:运行脚本如下:.
emovemasterkey.ps1-bacpachath"c:identity.bacpac"
就是这样,现在您可以在您的本地环境中在MSSQL2017上恢复它。
步骤6:连接到本地服务器,然后单击数据库→导入数据层应用程序
步骤7:为要还原的数据库提供一个名称。
现在你将看到绿色的一切!
用图表阅读我的博客。
您可以使用新的Azure移动服务执行从SQL Azure到托管在Azure存储中的.bacpac文件的夜间备份导出。此解决方案是100%云,不需要第三方工具,也不需要本地托管的SQL Server实例来下载/复制/备份任何内容。
大约有8个不同的步骤,但都很简单:http://geekswithblogs.net/benbarterth/archive/2013/04/15/how-to-create-a-nightly-backup-of-your-sql-azure.aspx
下载OptiCollect SQL Azure备份-它有15天的试用期,因此足以移动您的数据库:)
使用SQL Azure中的导入/导出服务创建.bacpac文件。
然后在另一篇堆栈溢出文章中查看此方法。
Azure SQL数据库bacpac本地还原
现在,您可以使用SQL Server Management Studio来执行此操作。
- 连接到SQL Azure数据库。
- 右键单击对象资源管理器中的数据库。
- 选择"tasks"/"deploy database to sql azure"选项。
- 在名为"部署设置"的步骤中,选择本地数据库连接。
- "下一个"/"下一个"/"完成"…
如果有人在导入使用AzureSQL同步的数据库的bacpac时遇到问题,Sandrino di Mattia开发了一个非常简单的应用程序来解决这个问题。
如果有人想要一个免费且有效的选项(不介意手动执行)将数据库备份到本地,那么请使用最新版本的Microsoft Visual Studio 2015社区版(免费)或专业版/高级版/终极版内置的架构和数据比较功能。它真是魅力四射!
我在Azure有BizPark帐户,如果不付费,就无法直接备份数据库。我在vs works中找到了这个选项。
答案摘自https://stackoverflow.com/a/685073/6796187
嗨,我正在使用sqlazuremw工具进行sqlazare数据库迁移和管理。非常有用。它是从codeplex下载的,但目前它不可用。codeplex将关闭,相同的应用程序工具现在在gtthub中可用。下面的链接将解释如何使用此工具,并提供下载应用程序。
https://github.com/twright-msft/azure-content/blob/master/articles/sql-database/sql-database-migration-wizard.md
我的诀窍是开始在空数据库上复制pks/fks/约束,然后在导入数据时临时禁用约束(请参阅https://stackoverflow.com/a/161410)。
更确切地说:
希望这有帮助!