Как опубликовать файл DACPAC в проекте базы данных SQL Server с помощью SQLPackage.exe из SSDT?
Я использую SSDT для Visual Studio 2012 здесь и используя свой инструмент командной строки SQLPackage.exe
для публикации файла .dacpac.
Я хочу опубликовать это в SQL Server database project
. Я пытаюсь использовать параметр в этом руководстве, но не могу найти способы, как это сделать.
Как я могу это сделать?
Ответы
Ответ 1
Вы пытаетесь опубликовать в базе данных или создать проект базы данных из dacpac? Это две разные вещи.
-
Чтобы создать проект базы данных на основе dacpac, создайте новый проект базы данных SQL Server в Visual Studio. Затем щелкните правой кнопкой мыши проект в обозревателе решений и выберите "Импорт → Приложение уровня данных (*.dacpac)" и выберите свой dacpac. Это преобразует содержимое dacpac в скрипты в проекте, и если вы выберете "Импортировать настройки базы данных", параметры базы данных будут установлены на основе настроек в dacpac. К сожалению, нет способа сделать это с помощью инструмента командной строки, о котором я знаю.
-
Чтобы использовать SqlPackage.exe для публикации в базе данных, в руководстве, к которому вы привязались, есть все варианты. Простой командой будет "sqlpackage/a: publish/sf:db1.dacpac/tsn: localhost/tdn: db1" для публикации dacpac "db1" в базе данных "localhost\db1". Для других вариантов публикации введите "sqlpackage/a: publish/?" для получения списка применимых действий в командной строке.
Ответ 2
С помощью Powershell вы можете выполнить развертывание либо в стандартных локальных экземплярах SQL, либо в Azure SQL Instance. Строка подключения и другие свойства будут передаваться из PublishProfile
$PublishPath = "Path for the log"
$dacpac = "dbname.dacpac"
$publishProfile = "dbname.xml" # Publish profile xml for Publishing the database project
# Generate Deploy Report
$DeployReport = ".\sqlpackage.exe /Action:DeployReport /Sourcefile:$dacpac '
/pr:'$publishProfile' /outputpath:$PublishPath"
Invoke-Expression $DeployReport
# Generate Script Report
$GenerateScript = ".\sqlpackage.exe /Action:Script /Sourcefile:$dacpac '
/pr:'$publishProfile' /outputpath:$PublishPath"
Invoke-Expression $GenerateScript
# Database Publish
$publish = ".\sqlpackage.exe /Action:Publish /Sourcefile:$dacpac '
/pr:'$publishProfile'"
Invoke-Expression $publish | Out-File $PublishPath