有人知道如何复制SQL Azure数据库到我的开发机器吗?我不想再花钱在云端建立开发数据库,但这是获得生产数据的最佳方式。我将我的生产数据库复制到一个新的开发数据库,但我想在本地拥有相同的数据库。
有什么建议吗?
有人知道如何复制SQL Azure数据库到我的开发机器吗?我不想再花钱在云端建立开发数据库,但这是获得生产数据的最佳方式。我将我的生产数据库复制到一个新的开发数据库,但我想在本地拥有相同的数据库。
有什么建议吗?
当前回答
使用SQL Azure中的导入/导出服务创建.bacpac文件。
然后在另一篇Stack Overflow文章中查看此方法。
Azure SQL数据库Bacpac本地恢复
其他回答
公认的答案已经过时了。我找到了一个更好的答案:使用导入数据层应用程序
更多详细信息请参阅本文: 恢复Azure SQL数据库到本地服务器
在SQL Server 2016 Management Studio中,将azure数据库获取到本地机器的过程已经简化。
右键单击要导入的数据库,单击Tasks > Export data-tier application,然后将数据库导出到本地的.dacpac文件。
在本地目标SQL server实例中,可以右键单击Databases >导入数据层应用程序,一旦它是本地的,就可以执行备份和恢复数据库之类的操作。
我总是使用导入/导出功能,这似乎是最简单的一个。
步骤1:
从azure实例获取备份,如下所示,选择数据库→右键单击→任务→导出数据层应用程序。
步骤2: 为备份文件指定一个特定的名称,并将其保存在所需的位置
步骤3:您已经将数据库的备份从sql实例备份到本地。让我们将其恢复到本地。将备份的数据库复制到C盘。现在用管理员权限打开PowerShell并导航到C驱动器
步骤4:让我们下载powershell脚本来删除主密钥removemasterkey。ps1将脚本放在同一个驱动器上,在这种情况下是C。
第五步:运行脚本,如下所示。 \ RemoveMasterKey。ps1 -bacpacPath "C:\identity.bacpac"
就是这样,现在您可以在本地环境中的MSSQL 2017上恢复它。
步骤6:连接到本地服务器,然后单击数据库→导入-数据层-应用程序
步骤7:为要恢复的数据库指定一个名称。
现在你会看到所有的东西都变成绿色了!
用图表阅读我的博客。
有多种方法可以做到这一点:
Using SSIS (SQL Server Integration Services). It only imports data in your table. Column properties, constraints, keys, indices, stored procedures, triggers, security settings, users, logons, etc. are not transferred. However it is very simple process and can be done simply by going through wizard in SQL Server Management Studio. Using combination of SSIS and DB creation scripts. This will get you data and all missing metadata that is not transferred by SSIS. This is also very simple. First transfer data using SSIS (see instructions below), then create DB Create script from SQL Azure database, and re-play it on your local database. Finally, you can use Import/Export service in SQL Azure. This transfers data (with a schema objects) to Azure Blob Storage as a BACPAC. You will need an Azure Storage account and do this in Azure web portal. It is as simple as pressing an "Export" button in the Azure web portal when you select the database you want to export. The downside is that it is only manual procedure, I don't know a way to automate this through tools or scripts -- at least the first part that requires a click on the web page.
方法1(使用SSIS)的手动步骤如下:
In Sql Server Management Studio (SSMS) create new empty database on your local SQL instance. Choose Import Data from context menu (right click the database -> Tasks -> Import data...) Type in connection parameters for the source (SQL Azure). Select ".Net Framework Data Provider for SqlServer" as a provider. Choose existing empty local database as destination. Follow the wizard -- you will be able to select tables data you want to copy. You can choose to skip any of the tables you don't need. E.g. if you keep application logs in database, you probably don't need it in your backup.
您可以通过创建SSIS包并在任何您想重新导入数据的时候重新执行它来实现自动化。请注意,您只能使用SSIS导入到一个干净的DB中,如果您已经对本地数据库进行了一次增量更新,则不能再对其进行增量更新。
方法#2 (SSID数据加上模式对象)非常简单。首先执行上述步骤,然后创建数据库创建脚本(右键单击SSMS中的数据库,选择生成脚本->数据库创建)。然后在本地数据库上重新播放此脚本。
方法3在这里的博客中描述:http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/。有一个视频剪辑,讲述了将DB内容作为BACPAC传输到Azure Blob存储的过程。之后,您可以在本地复制该文件并将其导入SQL实例。将BACPAC导入到Data-Tier应用程序的流程介绍如下:http://msdn.microsoft.com/en-us/library/hh710052.aspx。
您也可以在Windows Azure管理门户中检查SQL Azure数据同步。它允许您检索和恢复整个数据库,包括SQL Azure和SQL Server之间的模式和数据。