我正在尝试将SQL Server数据库从AWS SQL Server导入Azure SQL Server。 以下是我为导入过程所做的步骤:
在上传过程之后,当我将Azure blob存储中的.bacpac文件还原到Azure SQL Server时,我收到以下异常。
*无法使用备份文件' https://sqlmigrateassistant.blob.core.windows.net/sql2005backup/demodatabase.bacpac'因为它最初使用扇区大小512格式化,现在位于扇区大小为65536的设备上。 RESTORE FILELIST异常终止 *
在上面的第2步之后,我还尝试从本地文件路径手动将.bacpac文件从SQL Server Management studio(SSMS)导入Azure SQL Server。那时我得到以下异常。
*文件包含损坏的数据。 (Microsoft.Data.Tools.Schema.Sql) *
任何人都可以提供有关如何将数据库还原到Azure SQL Server的任何信息吗?
非常感谢任何信息。
答案 0 :(得分:2)
您必须使用带有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会使用上述错误消息阻止它