Azure SQL 导出无法在 Blob 容器中备份

Posted

技术标签:

【中文标题】Azure SQL 导出无法在 Blob 容器中备份【英文标题】:Azure SQL exports fail to backup in blob container 【发布时间】:2022-01-24 02:11:18 【问题描述】:

我在 Azure SQL 数据库中有一个数据库,单一数据库。这是我使用脚本在 Azure SQL 数据库中创建的 Northwind 示例。我正在尝试将此数据库导出到存储帐户 Gen 2 中的 blob 存储中。我在我的 Azure SQL 数据库、单个数据库所在的同一资源组中创建了一个存储帐户。通过门户我导出数据库。在我的数据库的防火墙设置中,我已经勾选了“允许 Azure 服务和资源访问此服务器”,如下所示:

我还添加了我的 IP 地址以进行访问。

当我点击导出时,我可以看到我的存储帐户,以及用于保存我的备份(导出数据库文件)的容器,如下所示:

但是,当我单击“确定”并提交导出请求时,几分钟后,我可以在“导入/导出历史记录”中看到我的请求状态恢复为“正在运行,进度 = 1%”,然后状态发生变化到“失败”。

当我在存储帐户中检查我的 blob 容器时,我可以看到所有文件都具有 4B 大小,如下所示:

这是什么原因,我该如何解决?基本上我想按照this link 将数据库导出到blob 存储中,但导出失败。提前谢谢你。

【问题讨论】:

Azure SQL Server 的导入/导出历史记录应该包含有关失败的详细信息。 BACKPAC 导出失败的原因有很多。 它引发的错误是:“Azure SQL Server 防火墙不允许操作连接。要解决此问题,请在 Sql Server 的配置刀片中选中“允许所有 Azure”复选框。”但我已经允许了。上面的第一个屏幕截图显示它设置为是。 不知道。您可以使用 SqlPackage 实用程序从任何地方运行导出。 docs.microsoft.com/en-us/sql/tools/sqlpackage/… 或 Database/Tasks/Export Data-tier Application 下的 SSMS 【参考方案1】:

您可以使用 SQL Server Management Studio (SSMS) 导出 blob 存储帐户中的数据库 bacpac 文件。

按照以下步骤操作:

    在本地计算机中打开 SSMS 并登录到 Azure SQL Server。填写所需的详细信息,然后单击连接,如下所示。

    右键单击要备份的数据库。按照任务 -> 导出数据层应用程序

    选择保存到 Microsoft Azure 选项。单击 连接 以连接您的 Azure 帐户并提供存储帐户详细信息。点击下一步

    在下一页上,检查您的设置摘要,然后单击完成按钮。

完成后,您可以检查存储帐户中的 bacpac 文件。请参阅下图以供参考。

可能需要额外的步骤:如果认证被缓存,您需要在Management Studio中运行DBCC FLUSHAUTHCACHE;命令,它将完美导出。

【讨论】:

谢谢@Utkarshpal-MT。基本上我完全遵循了你提到的相同程序。然而,出口仍然失败。最后我明白了,身份验证被缓存了。为了解决这个问题,我在 Management Studio 中运行了这个命令:DBCC FLUSHAUTHCACHE;之后,出口运作良好。 很高兴它成功了。感谢您分享您的发现。我将在我的回答中添加详细信息以帮助其他社区成员。

以上是关于Azure SQL 导出无法在 Blob 容器中备份的主要内容,如果未能解决你的问题,请参考以下文章

无法创建从 Azure Blob 存储容器到 Azure Sql 数据库超大规模的外部数据源

从 BLOB 批量插入 Azure SQL 说文件无法打开

Azure Sql 数据库导出到 Azure Blob 存储失败

Azure sql 数据库导出到存储 blob 失败

无法在Azure blob存储$ root容器中创建文件夹

我需要将 SQL Azure 中的媒体内容(视频或图像)存储上传到 Azure BLOB 容器