#azure-devops #dacpac
#azure-devops #dacpac
Вопрос:
Я пытаюсь развернуть свой проект в Azure DevOps через веб-сайт IIS и развертывание SQL. Однако я борюсь с развертыванием части SQL, поскольку у меня нет файла .dacpac в моих артефактах сборки. Как мне сгенерировать это, поскольку любой вариант, который я пробовал, заканчивался сбоем процесса.
PS У меня нет доступа к виртуальной машине, на которой я развертываю, из-за ограничений. Я могу получить доступ к базе данных, поскольку я пометил ее как DBO на компьютере.
Мой вопрос также в том, нужно ли мне каждый раз генерировать этот файл DACPAC с помощью сборки или он может быть сгенерирован только один раз, сохранен на компьютере, и я указываю из процесса развертывания на этот файл?
Спасибо за вашу помощь!
Комментарии:
1. У меня есть проект с db-up, поэтому я не могу сгенерировать dacpac. Любая помощь после этого ввода? Спасибо
Ответ №1:
Однако я борюсь с развертыванием части SQL, поскольку у меня нет файла .dacpac в моих артефактах сборки. Как мне сгенерировать это, поскольку любой вариант, который я пробовал, заканчивался сбоем процесса. Я могу получить доступ к базе данных, поскольку я пометил ее как DBO на компьютере.
-
Сначала вы должны создать проект базы данных SQL Server с использованием SSDT (или Azure Data Studio insiders preview) путем импорта объектов из текущей базы данных.
-
Затем проект базы данных должен быть помещен в репозиторий
-
Конвейер (классический или yaml) должен иметь задачу сборки MSBuild @1. Вот пример YAML. Он генерирует dacpac
- task: MSBuild@1
displayName: 'Build solution YourDatabase.sln'
inputs:
solution: 'src/YourDatabase.sln'
Эта задача компилирует проект базы данных и создает файлы dacpac
- Затем созданные файлы должны быть извлечены:
- task: CopyFiles@2
displayName: 'Extract DACPACs'
inputs:
CleanTargetFolder: false
SourceFolder: '$(agent.builddirectory)ssrcYourDatabasebinDebug'
Contents: '*.dacpac'
TargetFolder: '$(build.artifactstagingdirectory)'
- И, наконец, опубликован как артефакт
- task: PublishPipelineArtifact@1
displayName: 'Publish Artifact'
inputs:
targetPath: '$(build.artifactstagingdirectory)'
artifact: 'drop'
- Развертывание dacpac является конечной целью и может быть выполнено с помощью
SqlDacpacDeploymentOnMachineGroup@0
, однако это выходит за рамки первоначального вопроса
Мой вопрос также в том, нужно ли мне каждый раз генерировать этот файл DACPAC с помощью сборки или он может быть сгенерирован только один раз, сохранен на компьютере, и я указываю из процесса развертывания на этот файл?
Это зависит.
-
Классические конвейеры разделены на этапы СБОРКИ и выпуска. В этом случае вы можете создать его один раз и повторно использовать этот dacpac для многих будущих выпусков.
-
В случае многоступенчатых конвейеров yaml обычно каждый запуск конвейера запускает этапы сборки и развертывания, поскольку они по-прежнему принадлежат одному конвейеру и выполняются как единое целое.
Комментарии:
1. Кажется, что это БД. Я не могу сгенерировать dacpac. Что делать дальше?
2. @AhmedB, я думаю, никто не может дать хороший ответ, почему dacpac не может быть сгенерирован, пока вы не покажете нам код вашего конвейера и какое сообщение об ошибке вы получили