繁体   English   中英

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

[英]How do I copy SQL Azure database to my local development server?

有谁知道我如何将 SQL Azure 数据库复制到我的开发机器? 我不想再花钱在云中拥有一个开发数据库,但这是获取生产数据的最佳方式。 我将我的生产数据库复制到一个新的开发数据库,但我希望在本地拥有相同的数据库。

有什么建议么?

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

  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

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

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

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

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

在此输入图像描述

“下一步”/“下一步”/“完成”

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

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

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

我觉得现在好多了。

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

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

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

这很容易。 这对我有用......在将Azure SQL数据库下载到本地计算机上...:

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

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

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

请记住,在我的情况下,我没有FK或其他约束......而且,它不是很多数据。

我不建议将其作为一般的备用机制......

使用msdeploy.exe

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

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

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

其他替代方案是SQL Azure Data Sync

几天前我又跑过一篇博文,但现在找不到了。 我一发现就会更新这篇文章。

我无法使SSIS导入/导出工作,因为我收到错误“插入只读列”失败“id”'。 我也无法使http://sqlazuremw.codeplex.com/工作,上面的SQL Azure Data Sync链接对我不起作用。

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

帖子的视频中,博客文章的作者经历了六个步骤:

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

  2. 该博客建议为bacpac文件创建一个新容器,并建议使用Azure Storage Explorer (注意,您需要Blob URL和存储帐户的主访问密钥才能将其添加到Azure存储资源管理器中。)

  3. 在Azure管理门户中,选择要导出的数据库,然后单击功能区的“导入和导出”部分中的“导出”。

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

  5. 单击“完成”后,数据库将导出到BACPAC文件。 这可能需要一段时间。 如果您在Azure存储资源管理器中签入,则可能会立即看到零字节文件。 这是导入/导出服务检查它是否具有对blob-store的写访问权。

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

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

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

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

我只有SQL Server 2008 R2附带的SQL导入/导出向导(工作正常),以及Visual Studio 2012 Express创建本地数据库。

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

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

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

请在此处查看更多详情。

https://sqlazuremw.codeplex.com/

您可以使用新的Azure移动服务从SQL Azure进行每晚备份导出到Azure存储中托管的.bacpac文件。 此解决方案是100%云,不需要第三方工具,也不需要本地托管的SQL Server实例来下载/复制/备份任何内容。

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

我总是使用导入/导出功能,这似乎是最容易的。

步骤1:

从azure实例获取备份,如下所示:选择数据库→右键单击→任务→导出数据层应用程序。

第2步:为备份文件指定一个特定名称,并将其保存在所需位置

第3步:就是你已经从sql实例备份了数据库到你的本地。 让我们恢复到本地。 将备份的数据库复制到C驱动器。 现在使用管理员权限打开PowerShell并导航到C盘

步骤4:让我们下载powershell脚本以删除主密钥.RemoveMasterKey.ps1将脚本放在同一驱动器上,在这种情况下为C。

步骤5:运行脚本如下,。\\ RemoveMasterKey.ps1 -bacpacPath“C:\\ identity.bacpac”

就是这样,现在您可以在本地环境中的MSSQL 2017上恢复它。

步骤6:连接到本地服务器,然后单击Databases→Import-Data-Tier-Application

步骤7 :为要还原的数据库命名。

现在你会看到绿色的一切!

用图表阅读我的博客

使用 SSMS v18.9+,您可以使用Deploy Database to Microsoft Azure SQL Database

这不是很直观,但是即使任务的名称是Deploy Database to Microsoft Azure SQL Database ,向导也允许您对本地数据库进行 select。

  1. 使用 SSMS 连接到您的 Azure 数据库
  2. 右键单击数据库,select Tasks > Deploy Database to Microsoft Azure SQL Database 在此处输入图像描述
  3. Select 您的本地 SQL 服务器作为目标连接。 在此处输入图像描述
  4. 遵循其他步骤。

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

我的诀窍是开始在空DB上复制PKs / FKs / constraints,然后在导入数据时暂时禁用约束(参见https://stackoverflow.com/a/161410 )。

更确切地说:

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

希望这可以帮助!

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

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

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

然后在另一篇Stack Overflow文章中查看此方法。

Azure SQL数据库Bacpac本地还原

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

  1. 导出数据库的Bacpac
  2. 下载Di Mattia的二进制文件
  3. 使用此控制台应用程序修复下载的Bacpac
  4. Lauch SSMS
  5. 右键单击“数据库”并选择“导入数据层应用程序”
  6. 选择修复过的Bacpac。

如果有人想要一个免费且有效的选项(并且不介意手动)将数据库备份到本地,那么使用最新版本Microsoft Visual Studio 2015 Community Edition(免费)或Professional / Premium / Ultimate中内置的架构和数据比较功能版。 它就像一个魅力!

我在Azure上有BizPark帐户,没有付费就无法直接备份数据库。 我在VS中找到了这个选项。

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

嗨,我正在使用SQLAzureMW工具进行SQLAzure数据库迁移和管理。 非常有用的一个。 它是从codeplex下载的,但是目前它不可用,codeplex将会关闭,同样的应用程序工具现在可以在GttHub中使用。 以下链接说明了如何使用此工具以及可供下载的应用程序。

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

在SQL Server Management Studio中

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

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

2022 年 Management Studio 似乎缺少该功能。这是我使用Azure Data Studio的方法:

  1. 安装 Azure 数据工作室
  2. 打开 Azure 数据工作室
  3. 为 SQL 服务器安装名为 Admin Pack 的扩展
  4. 重启 Azure 数据工作室
  5. 为源数据库 (Azure) 和目标(本地计算机)设置连接
  6. 在主数据库上的本地数据库引擎中执行语句: sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO
  7. 右键单击源数据库和 select 数据层应用程序向导 Select 导出到.bacpac 文件 [导出 bacpac](第 4 个,我当前版本中的最后一个选项)
  8. 完成向导
  9. 右键单击目标数据库和 select 数据层应用程序向导
  10. Select Import from.bacpac [Import bacpac](我的版本中的第三个选项)
  11. Select 之前创建的.bacpac 文件并完成向导

导入登录名并创建用户后,但未设置其默认架构。 如果需要需要手动处理的默认 shcema。 在这种情况下:打开到本地副本的管理员连接并运行: USE [imported-db]; ALTER USER imported-user WITH DEFAULT_SCHEMA = whatever; USE [imported-db]; ALTER USER imported-user WITH DEFAULT_SCHEMA = whatever;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM