Otcopus deploy — SQL — Deploy DACPAC Не удалось подключиться к серверу базы данных.

Пробуем развертывание Octopus в первый раз. Пытаюсь развернуть dacpac на машине, и он продолжает терпеть неудачу. Я продолжаю получать следующую ошибку:

Exception calling "Extract" with "4" argument(s): "Could not connect to database server." 
At C:\Octopus\Work\20191023152506-102-81\Script.ps1:394 char:13 
+             $dacServices.Extract($dbDacPacFilepath, $TargetDatabase,  ... 
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo          : NotSpecified: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : DacServicesException 

The remote script failed with exit code 1 

The action SQL - Deploy DACPAC on Staging failed

В настоящее время я использую SQL Server 2017 и установил dacframework для SQL Server 2016. Для строки подключения я пытался использовать ., localhost и имя сервера, указанное в Студия управления sql. Я не передаю никаких учетных данных, я использую встроенную безопасность. Я также передаю имя базы данных. Я также подписался на это видео на YouTube, просто не используя переменные проекта.


person Franco Pettigrosso    schedule 23.10.2019    source источник
comment
ваш процесс щупальца осьминога, который запускает развертывание dacpac, работает под пользователем, у которого есть доступ для записи в БД?   -  person Alex M    schedule 24.10.2019
comment
Для демонстрации я просто запустил его под NT AUTHORITY\SYSTEM. У этого пользователя не было доступа к базе данных.   -  person Franco Pettigrosso    schedule 24.10.2019
comment
так как вы планировали использовать integrated security?   -  person Alex M    schedule 24.10.2019
comment
Сначала я не знал, как это будет работать. В каком-то смысле у меня до сих пор нет и у меня нет плана, как его использовать. Я предоставил NT AUTHORITY\SYSTEM доступ к БД, и это сработало. Если у вас есть какие-либо знания о том, как это следует использовать - это будет очень признательно.   -  person Franco Pettigrosso    schedule 24.10.2019
comment
см. пример в ответе для кода PS, который сгенерирует сценарий обновления для БД из dacpac. Запустите его вручную для удобства тестирования.   -  person Alex M    schedule 27.10.2019


Ответы (1)


В моем предыдущем опыте я просто использовал SqlPackage.exe для развертывания dacpac. Помогает для ручного тестирования и полировки разрешений или других проблем.

Например:

#example usage:Generate-DBUpdate-Script -server $dbServer -db $dbName -user $dbUser -psw $dbPassword -dacpacFilePath $dacpacFile -publishProfilePath ".\Publish\$dbPublishProfile" -outputFile $SqlUpgradeArtifactName
function Generate-DBUpdate-Script($server, $db, $user, $psw, $dacpacFilePath, $publishProfilePath, $outputFile)
{        
    #generate an update script
    & 'C:\Program Files (x86)\Microsoft SQL Server\110WorkingDAC\DAC\bin\SqlPackage.exe' /Action:Script /OutputPath:$outputFile /SourceFile:$dacpacFilePath /Profile:$publishProfilePath /TargetServerName:$server /TargetDatabaseName:$db /TargetUser:$user /TargetPassword:$psw

    #save generated script as deployment artifact
    New-OctopusArtifact $outputFile
}

Можно изменить действие на publish, чтобы избежать создания скрипта и сразу развернуть его.

Надеюсь, это поможет.

person Alex M    schedule 24.10.2019