导入Azure SQL Database导出的.bacpac时遇System.OutOfMemoryException错误
解决.bacpac导入SSMS时的System.OutOfMemoryException问题
核心原因
该错误大概率是32位版本SSMS的内存限制导致的:32位程序最多只能调用约2GB内存,处理40GB级别的.bacpac文件时,极易触发内存溢出,和磁盘空间充足与否无关。
可行解决办法
- 切换到64位SSMS:安装64位版本的Microsoft SQL Server Management Studio,它能突破32位的内存限制,充分利用系统可用内存处理大文件。
- 使用SqlPackage.exe命令行工具导入:这是微软官方的DAC工具,比SSMS图形界面更稳定,适合大文件操作:
- 定位工具路径,通常在
C:\Program Files\Microsoft SQL Server\150\DAC\bin(版本号随SQL Server/SSMS版本变化,如160对应SSMS 19) - 执行导入命令:
SqlPackage.exe /Action:Import /SourceFile:"C:\你的文件路径\目标文件.bacpac" /TargetConnectionString:"Server=你的SQL服务器名;Database=新建目标库名;User Id=登录账号;Password=登录密码;"
- 定位工具路径,通常在
- 拆分.bacpac(备选):若上述方法仍有问题,可尝试将大.bacpac拆分为小文件后分批导入,但操作繁琐,仅作为最后备选。
额外注意点
- 确认目标SQL Server版本与Azure SQL Database版本兼容,避免版本不兼容引发的隐性问题。
- 导入前关闭其他高内存占用程序,为导入操作预留充足内存。
内容的提问来源于stack exchange,提问作者Juan Ignacio Portilla Kitroser
相关产品推荐
相关产品推荐

