【问题标题】:Azure DevOps - Multitenant database deploymentAzure DevOps - 多租户数据库部署
【发布时间】:2020-10-22 00:37:12
【问题描述】:

我们有一个包含一个代码和多租户数据库的 Web 应用程序,我们正在使用 Azure Devops CI/CD 进行代码部署。我们能够完美地将代码发布到数据库,但是我们希望将其部署到多个数据库而不需要多个发布管道(租户数量是动态的,其中 100 多个)。

我能够将代码部署到一个数据库,然后使用 sqlpackage.exe 和 dacpac 文件在目标服务器的命令行中发布相互重新部署。但我只想在 Azure devops 中这样做,但是在命令行任务中的代理机器上没有 sqlpackage.exe。

这里有人用多租户数据库方法处理类似问题吗?我对使用 Azure 发布管道的任何解决方案持开放态度。

【问题讨论】:

    标签: azure devops release multi-tenant sqlpackage


    【解决方案1】:

    我能够通过在部署组上运行 Inline Powershell 和 SqlPackage.exe 来解决此问题。您只需要拥有一个“模板数据库”,从中获取 dacpac 或 bacpac 文件文件,然后将其发布到所有其他数据库。

    参考示例:

    ForEach ($a in (Get-Content "E:\DatabaseSync\databaselist.txt"))
    {
      SqlPackage.exe /a:Publish /sf:"E:\DatabaseSync\TemplateDB.dacpac" `
    /tsn:localhost /tu:username /tp:password /tdn:$a `
    /p:TreatVerificationErrorsAsWarnings=False /p:BlockOnPossibleDataLoss=True `
    /p:AllowDropBlockingAssemblies=True /p:DropObjectsNotInSource=True `
    /p:DropPermissionsNotInSource=False /p:IgnorePermissions=True `
    /p:IgnoreRoleMembership=True /p:IgnoreUserSettingsObjects=True `
    /p:DoNotDropObjectTypes=Users /p:ExcludeObjectTypes=Users
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 1970-01-01
      • 2019-10-26
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 2022-01-17
      • 2019-08-12
      相关资源
      最近更新 更多