【问题标题】:Restoring Database from Azure Blob Storage failing due to different sector size error由于不同的扇区大小错误,从 Azure Blob 存储还原数据库失败
【发布时间】:2017-03-20 11:49:12
【问题描述】:

我正在尝试将 SQL Server 数据库从 AWS SQL Server 导入 Azure SQL Server。 以下是我为导入过程所做的步骤:

  1. 将数据库从 AWS SQL Server 备份到 AWS S3 存储桶。
  2. 将 .bacpac 文件从 S3 存储桶复制到本地文件路径。
  3. 将 .bacpac 文件从本地文件路径上传到 Azure Blob 存储。

在上传过程之后,当我将 .bacpac 文件从 Azure blob 存储还原到 Azure SQL Server 时,我收到以下异常。

*无法使用备份文件“https://sqlmigrateassistant.blob.core.windows.net/sql2005backup/demodatabase.bacpac”,因为它最初格式化为扇区大小 512,现在位于扇区大小为 65536 的设备上。 RESTORE FILELIST 异常终止 *

在上面的第 2 步之后,我还尝试将 .bacpac 文件从本地文件路径手动从 SQL Server 管理工作室 (SSMS) 导入 Azure SQL Server。当时我遇到了以下异常。

*文件包含损坏的数据。 (Microsoft.Data.Tools.Schema.Sql) *

谁能提供有关如何将数据库还原到 Azure SQL Server 的任何信息?

非常感谢任何信息。

【问题讨论】:

    标签: sql-server azure amazon-web-services amazon-s3


    【解决方案1】:

    您必须使用带 URL 的还原数据库并指定块大小为 512..

    RESTORE DATABASE [AdventureWorks2012] FROM  URL = N'your bacpac path'
    WITH  CREDENTIAL = N'My_Credential'
    , FILE = 1,  NOUNLOAD,  STATS = 5,BLOCKSIZE= 512;
    

    这里已经解释了失败的原因:Database restore failure when restoring from URL 并且上下文也适用于您的场景

    备份到 URL 时,SQL Server 默认使用 64K 块大小,因为 Azure blob 存储提供的扇区大小为 64K。因此,由 Managed Backup 创建到 URL 的定期计划备份具有与媒体扇区大小相同的块大小,并且不会发生此问题。但是,当在本地磁盘上创建的 4K 扇区大小的备份复制到存储帐户,然后尝试从中恢复时,SQL Server 会阻止它并显示上述错误消息

    【讨论】:

    • 感谢您提供此信息。我已经通过将块大小设置为 512 来尝试此解决方案,但我仍然会遇到异常。
    • 奇怪,能不能用4096试试
    • 我也尝试了 4096。仍然会出现同样的问题。
    • 为我工作 - 我也有一个 RESTORE filelistonly FROM URL = url.goes.here.com,它也需要 BLOCKSIZE = 512。谢谢。所有其他 Google 资源似乎都是从创建备份文件的角度来的 - 不是从一个恢复
    猜你喜欢
    • 2021-01-26
    • 2019-05-28
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多