因为这个问题我想尝试将 BACPAC 文件导入 Azure SQL Server。
当我尝试将数据层应用程序(BACPAC 文件)导入新的 Azure 数据库时,出现内存不足异常。
当我运行数据迁移助手时,我收到 1 个不受支持的功能 Azure SQL 数据库不支持跟踪标志
答案1
由于评论很受欢迎,因此将其作为答案发布......
尝试关闭 SSMS,然后重新打开它,并再次尝试导入。我发现,如果您之前运行了一些返回数百万行的非常大的选择语句,则 SSMS 进程已经使用了大量内存,并且更容易出现 OutOfMemory 错误。因此,关闭并重新打开 SSMS 有助于避免这种情况。
这System.OutOfMemoryException
是一个 .NET 错误,通常意味着 SSMS 客户端工具内存不足,而不是服务器内存不足。
答案2
将 1TB BacPac 文件导入 Azure SQL 数据库时遇到了类似的问题。
有效的解决方案是:
- 创建具有 64GB RAM 的 Azure VM (D16ds_v4) - 用于还原过程的临时 VM
- 将 4TB 托管磁盘附加到 Azure VM,对其进行格式化并挂载为驱动器 T:
- 将 BacPac 文件传输到虚拟机中
- 下载适用于 .Net Core 的 64 位 SqlPackage命令行工具进入 Azure VM
- 在 Azure VM 内的命令提示符中运行以下命令(禁用 QuickEdit):
mkdir T:\Temp
SET TEMP=T:\Temp
SET TMP=T:\Temp
sqlpackage.exe /a:import /tcs:"Data Source=[ServerName].database.windows.net;Initial Catalog=[DatabaseName];User Id=[UserName];Password=[Password]" /sf:E:\BacPacDir\BacPacFile.bacpac /p:DatabaseEdition=Hyperscale /p:DatabaseServiceObjective=HS_Gen5_2
- 将 E:\BacPacDir\BacPacFile.bacpac 更改为您的 bacpac 的位置。
- 相应地更改 Azure SQL 数据库参数:/p:DatabaseEdition=Hyperscale /p:DatabaseServiceObjective=HS_Gen5_2
- 对于标准/高级 SQL DB,有一个额外的 DatabaseMaximumSize 参数:/p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P11 /p:DatabaseMaximumSize=1024
答案3
您可以尝试使用 Azure 门户而不是数据库导入 Bacpac 文件。您可以使用类似以下工具将 Bacpac 上传到 Azure 存储Azure 存储资源管理器,然后将门户指向该门户以将其导入 -https://docs.microsoft.com/en-us/azure/sql-database/sql-database-import