如何生成DACPAC文件

Ahm*_*edB 5 dacpac azure-devops

我正在尝试通过 IIS 网站和 SQL 部署在 Azure DevOps 中部署我的项目。然而,我正在努力部署 SQL 部分,因为我的构建工件中没有 .dacpac 文件。我如何生成它,因为我尝试过的任何选项都以过程失败告终。

PS 由于限制,我无法访问我正在部署的虚拟机。我可以访问我在机器上标记为 DBO 的数据库。

我的问题还在于,我是否需要每次都通过构建生成此 DACPAC 文件,或者它只能生成一次,存储在计算机上,然后我从部署过程指向该文件?

感谢您的帮助!

Ale*_*lok 4

然而,我正在努力部署 SQL 部分,因为我的构建工件中没有 .dacpac 文件。我如何生成它,因为我尝试过的任何选项都以过程失败告终。我可以访问我在机器上标记为 DBO 的数据库。

  1. 首先,您必须使用 SSDT(或 Azure Data Studio 内部预览版)通过导入实时数据库的对象来创建 SQL Server 数据库项目。

  2. 然后数据库项目将被放入存储库中

  3. 管道(经典或 yaml)有一个构建任务 MSBuild@1。这是一个 YAML 示例。它生成 dacpac

- task: MSBuild@1
    displayName: 'Build solution YourDatabase.sln'
    inputs:
      solution: 'src/YourDatabase.sln'
Run Code Online (Sandbox Code Playgroud)

此任务编译数据库项目并生成 dacpac 文件

  1. 然后生成的文件将被提取:
- task: CopyFiles@2
    displayName: 'Extract DACPACs'
    inputs:
        CleanTargetFolder: false
        SourceFolder: '$(agent.builddirectory)\s\src\YourDatabase\bin\Debug\'
        Contents: '*.dacpac'
        TargetFolder: '$(build.artifactstagingdirectory)'
Run Code Online (Sandbox Code Playgroud)
  1. 最后,作为文物发布
  - task: PublishPipelineArtifact@1
    displayName: 'Publish Artifact'
    inputs:        
        targetPath: '$(build.artifactstagingdirectory)'
        artifact: 'drop'
Run Code Online (Sandbox Code Playgroud)
  1. dacpac 的部署是最终目标,可以使用 来完成SqlDacpacDeploymentOnMachineGroup@0,但是,这超出了原始问题的范围

我的问题还在于,我是否需要每次都通过构建生成此 DACPAC 文件,或者它只能生成一次,存储在计算机上,然后我从部署过程指向该文件?

这取决于。

  • 经典管道有构建和发布阶段的分离。在这种情况下,您可以构建一次并在未来的许多版本中重复使用该 dacpac。

  • 在多阶段 yaml 管道的情况下,每个管道运行都会触发构建和部署阶段,这是很常见的,因为它们仍然属于同一管道并作为单个单元工作运行。