Generate SQL Server schema change script on Azure DevOps pipeline
我正在尝试允许管道将架构更改发布到本地 SQL Server 2017 实例,但我想分两步完成:
- 生成架构更改脚本操作
- 审核通过后发布
我知道可以通过设置 deploymentAction: ‘Script’ 然后 deploymentAction: ‘Publish’
发布到 SQL Azure 来实现
有没有办法以类似的方式发布到本地 SQL Server?我已经尝试过 SqlDacpacDeploymentOnMachineGroup 任务,但似乎无法通过此任务分两步完成
我终于设法通过数据库更改实现 SQL 模式生成,然后发布这些更改(在批准后)。一些备注:
- 如果更改会导致数据丢失,这将不起作用。
- sqlpackage 的路径仅在安装 Visual Studio 2019 时正确,例如在 windows-2019 图像中。
- 以前的 package.dacpac 之前是通过构建 .sqlproj 项目生成的。
-
我通过组变量传递了以下变量(有关如何在此处创建组变量的更多信息):
- targetDBConnectionString
- servername
- databasename
- adminlogin
- adminPassword
-
我已向 ApplyChanges 阶段添加了批准
(在 Pipelines 菜单中,选择环境,然后选择 ApplyChanges
环境,然后是 approvals and checks 从三个点
按钮,在右上角)。这样的变化不是
在手动批准之前应用到数据库。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
stage: VerifyScript
displayName: ‘Script database schema changes’ dependsOn: – Build jobs: – deployment: VerifyScript pool: vmImage: ‘windows-2019’ variables: – group: ‘Timeline CV – Release’ environment: ‘scriptverification’ strategy: runOnce: deploy: steps: – download: current artifact: dropDacpac patterns: ‘**/*’ – task: CmdLine@2 – task: PublishPipelineArtifact@1 – task: PowerShell@2 – stage: ApplyChanges |
我认为没有内置任务可以为您执行此操作。但是,SQLPackage.exe 有这个选项。看看这篇文章:http://diegogiacomelli.com.br/azure-pipelines-generating-db-script/。它描述了使用命令行任务生成 sql 脚本。
一旦你有了脚本,你可以使用 SqlDacpacDeploymentOnMachineGroup 来发布脚本(虽然它不会重复使用已经生成的脚本),或者你可以编写一个 powershell 脚本来发布 sql 脚本到数据库。可以在此处找到此类脚本的示例:https://careers.centric.eu/nl/blog/custom-azure-devops-pipeline-task-execute-sql-script/
- 第一篇文章确实为我指明了正确的方向,但我认为可以使用 SqlDacpacDeploymentOnMachineGroup 发布增量 SQL 脚本。今晚我将发布我的解决方案。此外,第二篇文章中的代码链接不起作用,这使得像我这样对 Powershell 没有太多经验的人很难编写这样的脚本。
来源:https://www.codenong.com/61240633/