133

我使用 Azure 管理控制台中的“导出”选项为我的 Azure SQL 数据库创建了 BACPAC 备份。

将它下载到我的机器后,我有点不知道如何将它恢复到本地 SQL Server 实例。我遇到了 DacImportExportCli 工具,但找不到本地还原的示例。

此外,如果有人编写了执行此操作的脚本(因此可以安排),那将是很棒的。

4

6 回答 6

181

这可以通过 SQL Server Management Studio 2012 简单地完成

  1. 右键单击连接 > 数据库节点并选择“导入数据层应用程序...
  2. 在介绍步骤中选择“下一步”。
  3. 在此处输入图像描述
  4. 浏览或连接到保存备份的存储帐户。
于 2013-03-27T20:21:15.997 回答
52

我需要导出 SQL Azure 数据库,然后将其导入本地 SQL 2008 R2 服务器(注意我也在使用 Visual Studio 2010)。微软当然不遗余力地让这成为一项痛苦的任务,但是,我能够通过执行以下操作来做到这一点:

  1. 转到此链接http://msdn.microsoft.com/en-us/jj650014并安装适用于 Visual Studio 2010 的 SQL Server Data Tools

  2. 这将安装在您的本地驱动器上。在我的情况下,它放在这里:C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin

  3. 通过命令行或 powershell 浏览到这个

  4. 您将要执行 SqlPackage.exe

  5. 打开此链接以查看 SqlPackage.exe 的所有参数选项列表 ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx )

  6. 这是我需要执行的命令行,以将 .bacpac 文件导入本地 SQL 2008 R2 服务器:

    .\SqlPackage.exe /a:Import /sf:C:\mydatabasefile.bacpac /tdn:NorthWind /tsn:BINGBONG

/tdn是您希望将 bacpac 文件还原到的数据库的名称。 /tsn是您的 SQL 服务器的名称。

您可以在 #5 的链接上看到所有这些参数说明。

于 2013-03-14T21:06:02.350 回答
10

您可以使用客户端工具恢复 BACPAC。视频在这里:

http://dacguy.wordpress.com/2011/09/09/importexport-services/

这些工具可在此处获得:

http://sqldacexamples.codeplex.com/documentation

于 2011-10-27T02:41:51.893 回答
7

看来我的祈祷得到了回应。Redgate 今天免费推出了他们的 SQL Azure 备份工具 - http://www.red-gate.com/products/dba/sql-azure-backup/download

于 2011-10-21T18:04:39.097 回答
6

如果您使用的是 SSMS 2012,只需在对象资源管理器中右键单击服务器下的数据库文件夹并选择“导入数据层应用程序...”即可。

有一个需要注意的问题:截至 2013 年 3 月 26 日(当我需要自己了解如何执行此操作时),当您从 Azure 导出 .bacpac 时,它将以 .zip 文件的形式下载,不是.bacpac 文件,导入向导中的“浏览”按钮打开的文件对话框将仅显示 *.bacpac 或. 在文件过滤器中,暗示不支持 .zip。但是,如果您将过滤器更改为. ,选择您下载的.zip,然后单击下一步,向导将正常进行。

于 2013-04-01T14:57:33.570 回答
3

这是一次恢复一堆 bacpac 文件的脚本: Bulk Restore bacpac files local

cd [FOLDERPATH]
$goodlist = dir
cd 'C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin'
foreach($i in $goodlist){ $name = $i.Name; $namer = $i.Name.Substring(0, $i.Name.length - 7); .\SqlPackage.exe /a:Import /sf:[FOLDERPATH]\$name /tdn:$namer /tsn:[SERVERNAME] }
于 2014-10-06T11:04:33.930 回答