この記事は セゾン情報システムズ Advent Calendar 2022 2ページ目1日目の記事です。
SQL ServerのストアドプロシージャをGit管理し、デプロイを自動化できないか検討してみました。
Azure DevOpsのパイプライン
azure-pipelines.yml
trigger:
- main
variables:
- group: DB_VALUE
pool:
vmImage: windows-latest
steps:
- powershell: |
Write-Host "##vso[task.setvariable variable=sql;]$(TYPE $(Build.SourcesDirectory)\test.sql)"
- task: SqlAzureDacpacDeployment@1
displayName: 'contosoSQL'
inputs:
azureSubscription: "<service connection name>"
AuthenticationType: 'server'
ServerName: $(SERVER_NAME)
DatabaseName: $(DB_NAME)
sqlUsername: $(USER_NAME)
sqlPassword: $(PASSWORD)
deployType: InlineSqlTask
sqlInline: $(sql)
ポイント
-
vmImageはWindowsである必要があります
-
SqlAzureDacpacDeploymentタスクの
InlineSqlTask
オプションにファイル指定ができないので、PowerShellで無理やりファイルの中身を抽出して変数に格納しています
SQLの中身
テストなのでめちゃくちゃシンプルですが、既存のプロシージャを更新する場合はALTER PROCEDURE <プロシージャ名>
を使います
ALTER PROCEDURE [dbo].[test]
AS
BEGIN
SELECT * FROM usr
WHERE id = 001
END
これでmainブランチに変更がコミットされるとパイプラインが動き、SQL Server上のストアドプロシージャが更新されます。
ストアドプロシージャもGitで構成管理でき、デプロイの自動化もできました!