如何解决如何生成DACPAC文件
我正在尝试通过IIS网站和SQL部署在Azure DevOps中部署我的项目。但是,由于我的构建工件中没有.dacpac文件,因此我难以部署SQL部分。我如何将其生成为我尝试过的任何选项,但最终都失败了。
P.S。由于限制,我无权访问要部署的VM。我可以在计算机上标记为DBO的情况下访问数据库。
我的问题还在于,我是否需要每次通过构建生成此DACPAC文件,或者只能生成一次该DACPAC文件,并将其存储在计算机上,然后从部署过程指向该文件?
谢谢您的帮助!
解决方法
但是,由于我的构建工件中没有.dacpac文件,因此我难以部署SQL部分。我如何生成它,因为我尝试过的任何选项都以失败告终。我可以在计算机上标记为DBO的情况下访问数据库。
-
首先,您必须通过导入实时数据库的对象,使用SSDT(或Azure Data Studio内部预览)创建SQL Server数据库项目。
-
然后将数据库项目放入存储库中
-
管道(经典或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)\s\src\YourDatabase\bin\Debug\'
Contents: '*.dacpac'
TargetFolder: '$(build.artifactstagingdirectory)'
- 最后,作为人工制品发表
- task: PublishPipelineArtifact@1
displayName: 'Publish Artifact'
inputs:
targetPath: '$(build.artifactstagingdirectory)'
artifact: 'drop'
- 部署dacpac是最终目标,可以使用
SqlDacpacDeploymentOnMachineGroup@0
完成,但是,这超出了原始问题的范围
我的问题还在于,我是否需要每次通过构建生成此DACPAC文件,或者只能生成一次该DACPAC文件,并将其存储在计算机上,然后从部署过程指向该文件?
这取决于。
-
经典管道具有BUILD和RELEASE阶段的分离。在这种情况下,您可以构建一次,然后将该dacpac重新用于许多将来的版本。
-
对于多阶段yaml管道,通常每个管道运行都会触发构建和部署阶段,因为它们仍属于同一管道并作为单个单元运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。