要将144GB SQL Server数据库移动到Azure SQL,我想将其导出为.bacpac格式。
为此,我使用SQL版本130的SQL包:
C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin>SqlPackage.exe /Action:Export /ssn:MY_MSSQL_INSTANCE /sdn:MY_DATABASE /tf:d:\export.bacpac /p:Storage=file
但是,这会失败,因为我的主分区(C:,39GB可用)在操作期间耗尽了磁盘空间。正如您在命令中看到的那样,我尝试导出到D:。似乎导出脚本在C:上做了一些临时的事情。
我该怎样防止这种情况? (我已经检查了默认的SQL Server Temp路径,它也在D:)
答案 0 :(得分:1)
SqlPackage.exe在磁盘上使用三个位置:选定的输出路径,临时文件夹和isolated storage folder。
默认情况下,临时文件夹和隔离的存储文件夹位于主驱动器上。我相信您可以通过更改环境变量然后(在同一命令提示符下)运行SqlPackage.exe来更改临时文件夹位置,如下所示:
set TMP=d:\temp
SqlPackage.exe /a:export ...
但这可能还不够,因为使用了隔离存储。
答案 1 :(得分:0)
我已经在具有300GB甚至600GB可用磁盘空间的VM上再次尝试过,但它仍无法正常工作。我现在将尝试其他方法:Microsoft数据迁移助手,或首先传输模式,然后使用SQL Server导入导出向导来移动数据。
答案 2 :(得分:0)
增大C驱动器的大小并执行。
答案 3 :(得分:0)
在 18.7 版中,有一个新参数可用于 /p:TempDirectoryForTableData=(STRING)