Запретить запись SqlPackage в основной раздел во время экспорта

Чтобы переместить базу данных SQL Server 144 ГБ в Azure SQL, я хочу экспортировать ее в формат.bacpac.

Для этого я использую SQL-пакет SQL версии 130:

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:, с 39 ГБ свободного места) не хватает дискового пространства во время операции. Как вы можете видеть в команде, я пытаюсь экспортировать в D:. Кажется, что скрипт экспорта делает что-то временное на C:.

Как я могу предотвратить это? (Я уже проверил заданный по умолчанию путь к SQL Server, он также находится на D:)

4 ответа

Решение

Я попробовал это снова на ВМ, имеющей 300 ГБ и даже 600 ГБ свободного дискового пространства, он все еще не работает. Теперь я попытаюсь использовать другие методы: помощник по миграции данных Microsoft или сначала перенести схему, а затем использовать мастер экспорта и экспорта SQL Server для перемещения данных.

SqlPackage.exe использует три расположения на диске: выбранный путь вывода, временная папка и изолированная папка хранилища.

По умолчанию временная папка и папка изолированного хранилища находятся на основном диске. Я полагаю, что вы можете изменить местоположение временной папки, изменив переменную среды, а затем (в той же командной строке) запустив SqlPackage.exe, например так:

set TMP=d:\temp
SqlPackage.exe /a:export ...

Однако этого может быть недостаточно из-за использования изолированного хранилища.

В версии 18.7 для этого доступен новый параметр /p:TempDirectoryForTableData=(STRING)

Увеличьте размер диска C и выполните.

Другие вопросы по тегам