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

BZi*_*ink 152 sql-server database-migration azure azure-sql-database

有谁知道如何将SQL Azure数据库复制到我的开发机器?我想停止支付云中的开发数据库,​​但这是获取生产数据的最佳方式.我将我的生产数据库复制到一个新的开发数据库,​​但我希望在同一个数据库本地.

有什么建议?

sev*_*tov 125

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

  1. 使用SSIS(SQL Server Integration Services).它只会data在您的表中导入.不传输列属性,约束,键,索引,存储过程,触发器,安全设置,用户,登录等.但是,这是一个非常简单的过程,只需通过SQL Server Management Studio中的向导即可完成.
  2. 使用SSIS和DB创建脚本的组合.这将为您提供SSIS未传输的数据和所有缺少的元数据.这也很简单.首先使用SSIS传输数据(请参阅下面的说明),然后从SQL Azure数据库创建DB Create脚本,并在本地数据库上重新播放它.
  3. 最后,您可以在SQL Azure中使用导入/导出服务.这会将数据(使用架构对象)作为BACPAC传输到Azure Blob存储.您将需要Azure存储帐户并在Azure Web门户中执行此操作.当您选择要导出的数据库时,就像在Azure门户网站中按"导出"按钮一样简单.缺点是它只是手动程序,我不知道通过工具或脚本自动化的方法 - 至少第一部分需要点击网页.

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

  • 在Sql Server Management Studio(SSMS)中,在本地SQL实例上创建新的空数据库.
  • 从上下文菜单中选择Import Data(右键单击数据库 - > Tasks - > Import data ...)
  • 键入源的连接参数(SQL Azure).选择".Net Framework数据提供程序为SqlServer"作为提供程序.
  • 选择现有的空本地数据库作为目标.
  • 按照向导 - 您将能够选择要复制的表数据.您可以选择跳过任何不需要的表格.例如,如果将应用程序日志保留在数据库中,则可能在备份中不需要它.

您可以通过创建SSIS包并在任何时候重新导入数据时重新执行它来自动化它.请注意,您只能使用SSIS导入到干净的数据库,一旦完成一次,就不能对本地数据库进行增量更新.

方法#2(SSID数据加模式对象)非常简单.首先进行上述步骤,然后创建DB Creation脚本(在SSMS中单击数据库,选择Generate Scripts - > Database Create).然后在本地数据库上重新播放此脚本.

方法#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.

  • 我的诀窍是开始在空DB上复制PKs/FKs/constraints,然后在导入数据时暂时禁用约束.更确切地说:1 - 手动创建空目标数据库.2 - 右键单击​​"源DB">"任务">"生成脚本".空目标DB上的3-run脚本文件(现在DB具有正确的PK/FK /约束,但没有数据).4 - 禁用所有约束(http://stackoverflow.com/a/161410).5 - 导入数据(右键单击目标数据库>任务>导入数据).6-重新启用约束.希望这可以帮助! (3认同)
  • 这有效,只需一次修正.在服务器导入/导出向导中,数据源是'.Net Framework数据提供程序,用于SqlServer' (2认同)

小智 39

将Azure数据库数据复制到本地数据库:现在,您可以使用SQL Server Management Studio执行以下操作:

  • 连接到SQL Azure数据库.
  • 在对象资源管理器中右键单击数据库
  • 选择"任务"/"将数据库部署到SQL Azure"选项.
  • 在名为"部署设置"的步骤中,连接本地SQL Server并创建新数据库.

在此输入图像描述

"下一步"/"下一步"/"完成"

  • 到目前为止,最简单的解决方案与迄今为止最具误导性的菜单名称混合在一起。感谢您发布此信息。 (5认同)
  • 令人敬畏的是,这在SSMS中还不是很清楚,因为“将数据库部署到SQL AZURE”有点误导性... (4认同)

Jos*_*uch 31

我只想添加简化版的dumbledad的答案,因为它是正确的.

  1. 将Azure SQL数据库导出到blob存储上的BACPAC文件.
  2. 在SQL Management Studio内部,右键单击您的数据库,单击"导入数据层应用程序".
  3. 系统将提示您输入信息以访问Azure Blob存储上的BACPAC文件.
  4. 接下来几次点击......完成!

  • 我得到一个错误,说目标不能是sql azure v12? (4认同)
  • 确保您有一个将导入该BACPAC的SSMS版本:https://msdn.microsoft.com/en-us/library/mt238290.aspx (2认同)

Ada*_*ner 23

在SQL Server 2016 Management Studio中,简化了将azure数据库添加到本地计算机的过程.

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

在本地目标SQL Server实例中,您可以右键单击" 数据库">"导入数据层应用程序",一旦它在本地,您就可以执行备份和还原数据库等操作.

  • 就是这个.NB."导出数据层"包括数据,"提取数据层"仅为您提供定义 (4认同)

Thi*_*Guy 20

我觉得现在好多了.

  1. 启动SQL Management Studio
  2. 右键单击"数据库"并选择"导入数据层应用程序......"
  3. 该向导将引导您完成连接Azure帐户,创建BACPAC文件和创建数据库的过程.

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


小智 8

您还可以在Windows Azure管理门户中查看SQL Azure Data Sync.它允许您检索和还原整个数据库,包括SQL Azure和SQL Server之间的架构和数据.

  • SQL 数据同步不应该用作备份策略的一部分,因为有几个限制。它没有版本,它只备份数据而不备份其他对象。有关详细信息,请参阅 SQL 数据同步常见问题主题。(http://msdn.microsoft.com/en-us/library/windowsazure/jj650016.aspx) (2认同)

Geb*_*ebb 6

使用 msdeploy.exe

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

  1. 复制数据库属性页上的连接字符串。调整它以使其包含正确的密码。 数据库属性页面
  2. 获取目标 DB 的连接字符串。
  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
    
    Run Code Online (Sandbox Code Playgroud)

使用 SqlPackage.exe

  1. 将 azure 数据库导出到 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"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将包导入本地数据库。

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


小智 5

很简单 这对我有用...就将Azure SQL数据库下载到本地计算机而言...:

  1. 打开您的SQL Management Studio并连接到Azure SQL Server。
  2. 选择您要进入本地计算机的数据库,然后右键单击...选择“生成脚本”。按照提示进行操作...

但是,请注意,如果您还想要数据和脚本,请确保在开始生成之前检查“高级选项...”,然后向下滚动到“脚本的数据类型”,并确保您拥有“架构和数据” ...或任何适合您的内容。

它将为您提供一个不错的SQL脚本文件,然后可以在本地计算机上运行该脚本文件,它将创建数据库并用所有数据填充该数据库。

谨记在我的情况下,我没有FK或其他限制...而且,数据也不多。

我一般不建议将此作为备份机制...

  • 我不得不说这非常有效,没有大惊小怪。外键完美重现。生成的 SQL 脚本太大而无法在 SSMS 中打开,甚至无法在许多文本编辑器中打开,但我能够使用命令行`sqlcmd /S <server> /d <database> -E -i <azure_dump.sql>` (2认同)

小智 5

在 SQL Server Management Studio 中

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

在本地目标 SQL Server 实例中,您可以右键单击“数据库”>“导入数据层应用程序”,一旦它位于本地,您就可以执行备份和恢复数据库等操作。


归档时间:

查看次数:

88495 次

最近记录:

5 年,11 月 前