防止 SqlPackage 在 Export 期间写入主分区
Prevent SqlPackage from writing to primary partition during Export
要将 144GB SQL 服务器数据库移动到 Azure SQL 我想将其导出为 .bacpac 格式。
为此,我使用 SQL SQL 版本 130 的软件包:
C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin>SqlPackage.exe /Action:Export /ssn:MY_MSSQL_INSTANCE /sdn:MY_DATABASE /tf:d:\export.bacpac /p:Storage=file
但是,这失败了,因为我的主分区(C:,有 39GB 空闲空间)在操作期间用完了磁盘 space。正如您在命令中看到的,我尝试导出到 D:。导出脚本似乎在 C: 上做了一些临时的事情。
我该如何预防? (我已经检查了默认的 SQL Server Temp 路径,它也在 D:)
SqlPackage.exe 使用磁盘上的三个位置:选定的输出路径、临时文件夹和 isolated storage folder.
默认情况下,临时文件夹和独立存储文件夹位于主驱动器上。我相信您可以通过更改环境变量然后(在同一命令提示符中)运行 SqlPackage.exe 来更改临时文件夹位置,如下所示:
set TMP=d:\temp
SqlPackage.exe /a:export ...
不过,由于使用了隔离存储,这可能还不够。
我在有 300GB 甚至 600GB 可用磁盘的虚拟机上再次尝试 space,它仍然无法工作。我现在去试试其他的方法:Microsoft Data Migration Assistant,或者先传输schema,然后使用SQL Server Import Export Wizard 来移动数据。
增加C盘大小执行
在 18.7 版中有一个新参数可用于 /p:TempDirectoryForTableData=(STRING)
要将 144GB SQL 服务器数据库移动到 Azure SQL 我想将其导出为 .bacpac 格式。
为此,我使用 SQL SQL 版本 130 的软件包:
C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin>SqlPackage.exe /Action:Export /ssn:MY_MSSQL_INSTANCE /sdn:MY_DATABASE /tf:d:\export.bacpac /p:Storage=file
但是,这失败了,因为我的主分区(C:,有 39GB 空闲空间)在操作期间用完了磁盘 space。正如您在命令中看到的,我尝试导出到 D:。导出脚本似乎在 C: 上做了一些临时的事情。
我该如何预防? (我已经检查了默认的 SQL Server Temp 路径,它也在 D:)
SqlPackage.exe 使用磁盘上的三个位置:选定的输出路径、临时文件夹和 isolated storage folder.
默认情况下,临时文件夹和独立存储文件夹位于主驱动器上。我相信您可以通过更改环境变量然后(在同一命令提示符中)运行 SqlPackage.exe 来更改临时文件夹位置,如下所示:
set TMP=d:\temp
SqlPackage.exe /a:export ...
不过,由于使用了隔离存储,这可能还不够。
我在有 300GB 甚至 600GB 可用磁盘的虚拟机上再次尝试 space,它仍然无法工作。我现在去试试其他的方法:Microsoft Data Migration Assistant,或者先传输schema,然后使用SQL Server Import Export Wizard 来移动数据。
增加C盘大小执行
在 18.7 版中有一个新参数可用于 /p:TempDirectoryForTableData=(STRING)