有谁知道如何将 SQL Azure 数据库复制到我的开发计算机上?我想停止付费在云中拥有开发数据库,但这是获取生产数据的最佳方式。我将生产数据库复制到新的开发数据库,但我希望在本地拥有相同的数据库。
有什么建议吗?
最佳答案
有多种方法可以做到这一点:
- 使用 SSIS(SQL Server 集成服务)。它仅导入表中的
数据
。列属性、约束、键、索引、存储过程、触发器、安全设置、用户、登录名等不会传输。然而,这是一个非常简单的过程,只需通过 SQL Server Management Studio 中的向导即可完成。 - 结合使用SSIS 和数据库创建脚本。这将为您提供数据以及所有未由 SSIS 传输的缺失元数据。这也很简单。首先使用 SSIS 传输数据(请参阅下面的说明),然后从 SQL Azure 数据库创建 DB Create 脚本,并在本地数据库上重新运行它。
- 最后,您可以使用SQL Azure 中的导入/导出服务。这会将数据(带有架构对象)作为 BACPAC 传输到 Azure Blob 存储。您将需要一个 Azure 存储帐户并在 Azure Web 门户中执行此操作。只需在选择要导出的数据库时按 Azure Web 门户中的“导出”按钮即可。缺点是它只是手动过程,我不知道如何通过工具或脚本自动执行此操作 - 至少是需要单击网页的第一部分。
方法 #1 的手动过程(使用 SSIS)如下:
- 在 Sql Server Management Studio (SSMS) 中,在本地 SQL 实例上创建新的空数据库。
- 从上下文菜单中选择“导入数据”(右键单击数据库 -> 任务 -> 导入数据...)
- 输入源 (SQL Azure) 的连接参数。选择“.Net Framework Data Provider for SqlServer”作为提供程序。
- 选择现有的空本地数据库作为目标。
- 按照向导操作 - 您将能够选择要复制的表数据。您可以选择跳过任何不需要的表。例如。如果您将应用程序日志保存在数据库中,则您的备份中可能不需要它。
您可以通过创建 SSIS 包并在需要重新导入数据时重新执行它来实现自动化。请注意,您只能使用 SSIS 导入到干净的数据库,一旦完成一次就无法对本地数据库进行增量更新。
方法 #2(SSID 数据加架构对象)非常简单。首先执行上述步骤,然后创建数据库创建脚本(右键单击 SSMS 中的数据库,选择“生成脚本”->“创建数据库”)。然后在本地数据库上重新运行此脚本。
方法#3在博客中进行了描述:http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/ 。有一个视频剪辑,介绍了将数据库内容传输到 Azure Blob 存储(作为 BACPAC)的过程。之后,您可以在本地复制该文件并将其导入到您的 SQL 实例。将 BACPAC 导入数据层应用程序的过程如下所述:http://msdn.microsoft.com/en-us/library/hh710052.aspx .
关于sql-server - 如何将 SQL Azure 数据库复制到本地开发服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475306/