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

Posted

技术标签:

【中文标题】Azure Sql 数据库导出到 Azure Blob 存储失败【英文标题】:Azure Sql database export to Azure blob storage failed 【发布时间】:2021-01-26 17:41:18 【问题描述】:

我尝试通过 Azuer 门户将 azure Sql 数据库导出到 azure blob 存储,但出现错误:

Error encountered during the service operation. ; 
Exception Microsoft.SqlServer.Management.Dac.Services.ServiceException:Unexpected exception encountered while retrieving metadata for blob https://<blobstoragename>.blob.core.windows.net/databases/<databaseName>_12.10.2020-11:13:24.bacpac;.; Inner exception Microsoft.WindowsAzure.Storage.StorageException:The remote server returned an error: (403) Forbidden.;
Inner exception System.Net.WebException:The remote server returned an error: (403) Forbidden.

在 blob 存储帐户的防火墙设置中,所有网络访问都被拒绝。只能连接选定的网络,我激活了“允许受信任的 Microsoft 服务访问此存储帐户”选项。 Sql Server 和存储具有到同一网络的专用终结点连接。

我在同一网络中设置了一个能够访问 blob 存储的虚拟机。

公网访问被拒绝时,是否可以将sql数据库导出到azure存储?如果是,我缺少哪个设置?

【问题讨论】:

你能告诉我你是怎么做到的吗? 在 Azure 门户中选择任何 SQL 数据库,然后在顶部的菜单中您会看到一个导出按钮 嗨@MartinAy,这个答案对你有帮助吗? 您好,很抱歉回复晚了。是的,这很有帮助。谢谢,我错过了它不受支持的事实。我们在没有静态公共 ip 的环境中使用 azure cli docs.microsoft.com/en-us/cli/azure/sql/…。我们的解决方法是将 sql 数据库导出到公共 blob 存储,然后将其复制到私有存储。 【参考方案1】:

根据我的研究,在将 SQL 数据库导出到 Azure 存储时,目前不支持防火墙后的 Azure 存储帐户。更多详情请参考here。此外,您可以投票给feedback,让微软改进功能。

【讨论】:

【参考方案2】:

公网访问被拒绝时,是否可以将sql数据库导出到Azure存储?

是的,这是不可能的。但是会根据IP地址限制访问。

如果我们只设置存储防火墙设置:Allow access from Selected networkAllow trusted Microsoft services to access this storage account,从 Azure SQL 数据库访问存储时会出现 403 错误。

你错过的是,当我们设置Allow access from Selected network 时,存储防火墙将更像 Azure SQL 数据库防火墙设置!我们可以看到Firewall 设置中有一个客户端IP。我们必须将客户端 IP 添加到防火墙,然后 Azure SQL 数据库才能访问它。

【讨论】:

以上是关于Azure Sql 数据库导出到 Azure Blob 存储失败的主要内容,如果未能解决你的问题,请参考以下文章

将数据表从 Databricks dbfs 导出到 azure sql 数据库

“Azure ML 如何通过插入一行数据库将数据导出到 SQL 数据库”。

jdbc.SQLServerException:将数据导出到 Azure SQL Server 时找不到数据类型“TEXT”

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

从global到mooncake迁移SQL Azure

Azure 文档 (SQL 数据仓库, Azure SQL 数据库文档)