Azure DevOps Server で Azure SQL Database を使用する
Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019
この記事の手順を使用して、 Azure SQL Database を使用して Azure DevOps Server を構成します。 このトポロジには、オンプレミスの SQL サーバーを使用する場合と比べて、いくつかの追加の手順があります。
要件
- Azure SQL Database は、Azure DevOps Server 2019 以降のバージョンでのみ使用できます。
- Azure VM に Azure DevOps Server をインストールする必要があります。
- VM では、Azure SQL データベースに対する認証に使用されるシステム マネージド ID が有効になっている必要があります。
- VM はドメインに参加している必要がありますが、ワークグループには参加できません。
- Azure SQL データベースは単一データベースである必要があります。 マネージド インスタンスとエラスティック プールは、Azure DevOps Server 2022 以降でサポートされています。
すべての General Purpose SKU と Premium SKU がサポートされています。 Standard SKU S3 以降もサポートされています。 Basic SKU と Standard SKU S2 以下はサポートされていません。 Azure SQL Database を使用する Azure DevOps Server 構成では、SQL Server Analysis Services レポート機能を備えた古い SQL Server Reporting Services はサポートされていません。 代わりに、 Azure DevOps Analytics を使用できます。
Azure DevOps Server へのアップグレードは、Azure SQL Database を使用する場合に Team Foundation Server 2015 以降からのみサポートされます。 Azure SQL Database では、暗号化されたストアド プロシージャはサポートされていません。
Azure SQL Database を設定する
仮想マシンでマネージド ID を構成します。 現時点では、システムマネージド ID のみがサポートされています。
構成は、次を含むすべての標準メカニズムを使用して実行できます。
新しい Azure DevOps Server インスタンスを設定するには、次の 2 つの Azure SQL データベースを作成します。
AzureDevOps_Configuration
AzureDevOps_DefaultCollection
注意
既存のデータベースを使用して次のいずれかを行う場合は、この手順をスキップできます。
- Azure DevOps Server の新しいバージョンをアップグレードします。
- Azure DevOps Server の最新のインスタンスを Azure SQL Database に移行します。
Azure SQL Database サーバー Azure Active Directory 認証 を構成します。 自分をサーバーの Active Directory 管理者にします。 残りの構成手順を完了するには、データベースに対する管理者権限が必要です。 このアクセス許可は後で変更できます。
マネージド ID、または複数のサーバーを使用する場合は ID を有効にして、Azure SQL データベースにサインインし、適切なアクセス許可を付与します。 SQL Server Management Studio を使用してデータベース サーバーに接続します。 Azure Active Directory ユーザーと Active Directory 認証を使用して接続します。 SQL 認証で Azure SQL Database にサインインする場合、Azure Active Directory ユーザーを操作することはできません。
a.
main
データベースで次の T-SQL コマンドを実行します。CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [dbmanager] ADD MEMBER [VMName]
VMNameを、データベースに追加するマネージド ID を持つ仮想マシンの名前に置き換えます。
b. 構成とすべてのコレクション データベースで次の T-SQL コマンドを実行します。
CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [db_owner] ADD MEMBER [VMName] ALTER USER [VMName] WITH DEFAULT_SCHEMA=dbo
Azure DevOps Server の構成
Azure DevOps Server 構成ウィザードに戻ります。 新しいインスタンスを設定する場合は、 選択します。これは新しい Azure DevOps Server のデプロイです。 データベースに既存のデータをアップグレードまたは移行する場合は、[ この Azure DevOps Server のデプロイに使用する既存のデータベースがあるを選択します。
構成ウィザードの Database ページに移動したら、Azure SQL Database サーバー インスタンスを指定します。 通常、サーバー インスタンスは SQLInstanceName.database.windows.net の形式です。
これで、Azure SQL Database で実行される Azure DevOps Server インスタンスが作成されました。
オンプレミスの SSMS から Azure SQL データベースに接続する
オンプレミスの SSMS から Azure SQL データベースに接続するには、次の手順を実行します。
SQL から BLOB ストレージ/ファイル共有へのプライベート エンドポイントと同じ VNET で実行されている VM から SSMS を使用して SQL Server Management Studio 経由でエクスポートします。
SQL Server Management Studio のデータ層アプリケーションのエクスポート ウィザードを使用して、Azure SQL データベースを .bacpac ファイルにエクスポートできます。 .bacpac ファイルは、Azure BLOB ストレージまたはファイル共有に格納できます。
SSMS>Tasks>Export データ層アプリケーション ウィザードから論理 SQL Server 上の SQL Database を右選択します。
[次へ] を選択します。
BACPAC ファイルを格納する場所を選択します。
を選択してを閉じます。
DAC パッケージは次の場所にあります: C:\Users\{sample-user-name}\OneDrive - Microsoft\Documents\SQL Server Management Studio\DAC Packages
。
Azure DevOps Server 2022 から Azure SQL Database を接続する
Azure DevOps Server 2022 (オンプレミス) から Azure SQL Database を接続するには、アクセスの構成、接続の確保、および適切な資格情報の使用が含まれます。 Azure DevOps Server 2022 から Azure SQL Database を接続するには、次の手順を実行します。
前提条件
カテゴリ | 要件 |
---|---|
ファイアウォール規則 | Azure SQL Database ファイアウォール規則では、Azure DevOps Server がホストされている IP アドレスまたはサブネットからの受信接続を許可します。 これを行うには、Azure portal>Azure SQL Database>Settings>ファイアウォールと仮想ネットワークに移動> Azure DevOps Server のパブリック IP アドレスまたはサブネットからのアクセスを許可する新しい規則を追加します。 |
ツール | - Azure からプロビジョニングされ、アクセス可能な Azure SQL Database。 サーバー名、データベース名、および認証方法のレコード。 - オンプレミス環境で実行されている Azure DevOps Server 2022. - Azure DevOps Server がインストールされているのと同じコンピューターにインストールされている SSMS。 |
Azure SQL Database に接続する
Azure SQL Database 接続の詳細を取得します。
- サーバー名:
<your-server-name>.database.windows.net
- データベース名:
<your-database-name>
- 認証方法: SQL Server 認証 (ユーザー名/パスワード) または Microsoft Entra ID 認証。
- サーバー名:
SQL Server Management Studio (SSMS) を使用して接続する: a. Azure DevOps Server がインストールされているマシンで SQL Server Management Studio を開きます。 b. Azure SQL Database に接続する: c. SSMS を起動します。 d. [サーバーへの接続] ウィンドウで、次の手順を実行します。
- サーバー名を入力します。
<your-server-name>.database.windows.net
- [認証: SQL Server 認証] を選択します。
- ユーザー名とパスワードを入力します。
- [接続] を選択 します。 接続されると、SSMS のオブジェクト エクスプローラーの下に Azure SQL Database が一覧表示されます。
- サーバー名を入力します。
接続をテストする: SSMS でクエリまたはコマンドを実行して、接続を確認します。
SELECT @@VERSION;
このクエリは、Azure SQL Database の SQL Server バージョンを返し、接続が成功したことを確認します。
Azure DevOps Server で接続を使用する: SSMS からの接続を確認したら、次のようなさまざまなタスクに Azure DevOps Server 内でこの接続を使用できます。
- 自動デプロイ: Azure DevOps Server でリリース パイプラインを設定して、データベースの変更をデプロイします。
- データ移行: Azure DevOps Server と統合された SQL スクリプトまたはデータ ツールを使用します。
- 継続的インテグレーション: データベースの変更を CI/CD パイプラインに統合します。
ヒント
- セキュリティで保護する: Microsoft Entra ID を使用して、より安全なアクセスを実現することを検討してください。
- 資格情報の管理: 資格情報を安全に保存し、スクリプトや構成でハードコーディングしないようにします。
- モニター: データベース接続と使用状況を監視して、セキュリティとパフォーマンスを確保します。
オンプレミスで実行されている Azure DevOps Server 2022 から Azure SQL Database を接続することで、合理化されたデータベース管理と開発およびデプロイ プロセスとの統合が可能になります。 組織のポリシーと要件に基づいて、構成とセキュリティ対策を調整します。
Azure DevOps Server 2022 で Azure SQL Database 接続を使用する
Azure DevOps Server の準備:
a. オンプレミス環境に Azure DevOps Server 2022 がインストールされ、構成されていることを確認します。</
b. パイプラインを作成および管理するための適切なアクセス許可を持つ Azure DevOps Server へのアクセス。Azure DevOps プロジェクトとリポジトリを設定する (まだ行っていない場合):
ある。 新しい Azure DevOps プロジェクトを作成するか、既存の Azure DevOps プロジェクトを使用します。
b. パイプラインの定義とスクリプトを格納する Git または TFVC リポジトリを設定します。パイプラインの作成:
ある。 Azure DevOps プロジェクトに移動します。
b. パイプライン>パイプライン>新しいパイプラインを選択します。
c. 要件に基づいて適切なパイプライン テンプレートを選択します。 Azure SQL Database の場合は、空のジョブから開始するか、デプロイのニーズに合ったテンプレート (Azure Pipeline など) を選択できます。
d. パイプライン YAML ファイルを編集するか、クラシック エディターを使用してパイプラインのステージとタスクを定義します。Azure SQL Database にデプロイするタスクを追加します。
タスク: SQL Server データベースの展開:
SqlAzureDacpacDeployment
タスクを使用して、Azure SQL Database に変更をデプロイします。 YAML スニペットの例:steps: - task: SqlAzureDacpacDeployment@1 inputs: azureSubscription: 'YourServiceConnectionName' # Use your Azure SQL Database service connection serverName: '<your-server-name>.database.windows.net' databaseName: '<your-database-name>' deployType: 'DacpacTask' authenticationType: 'server' sqlUsername: '$(sqlUsername)' sqlPassword: '$(sqlPassword)'
<your-server-name>
、<your-database-name>
、$(sqlUsername)
、および$(sqlPassword)
を適切な値または変数に置き換えます。タスク: Azure SQL クエリ:
AzureSqlQuery
タスクを使用して、Azure SQL Database に対して SQL クエリを実行します。 YAML スニペットの例:steps: - task: AzureSqlQuery@1 inputs: azureSubscription: 'YourServiceConnectionName' # Use your Azure SQL Database service connection serverName: '<your-server-name>.database.windows.net' databaseName: '<your-database-name>' sqlUsername: '$(sqlUsername)' sqlPassword: '$(sqlPassword)' sqlQuery: 'SELECT * FROM TableName'
資格情報を安全に管理する: Azure DevOps 変数または Azure Key Vault 統合を使用して、SQL Server 資格情報 (
sqlUsername
やsqlPassword
) などの機密情報を管理します。パイプラインのトリガーと実行:
- パイプラインの変更を保存してコミットします。
- デプロイ戦略に従って、パイプラインを手動でトリガーするか、トリガー (コード コミット、スケジュールなど) を設定します。
パイプラインの実行を監視する:
- Azure DevOps でパイプラインの実行を監視し、Azure SQL Database へのデプロイが成功したことを確認します。
- デプロイ中の問題のトラブルシューティングを行うには、ログと出力を確認します。
ヒント
- リリース パイプラインとの統合: ビルド パイプラインをリリース パイプラインと統合して、より複雑なデプロイ シナリオと承認を実現します。
- データベースの増分変更を行います。 SQL Server Data Tools (SSDT) や移行などのツールを使用して、データベース スキーマへの増分変更を管理します。
- バージョン管理を使用する: SQL スクリプトとデータベースの変更をバージョン管理下に保持して、変更を追跡し、再現性を確保します。
特定の展開のニーズと組織の要件に基づいて、構成とタスクを調整します。
SQL Server バックアップを作成する
Azure DevOps Server 管理コンソールを使用して Azure DevOps Server 2022 の SQL Server バックアップを作成するには、バックアップ設定を構成し、定期的なバックアップをスケジュールする必要があります。 SQL Server バックアップを作成するには、次の手順を実行します。
バックアップの前提条件
カテゴリ | 要件 |
---|---|
アクセス | Azure DevOps Server がインストールされているサーバーへの管理者アクセス。 |
アクセス許可 | バックアップを構成し、SQL Server Management Studio にアクセスするためのアクセス許可。 |
バックアップの作成
Azure DevOps Server がインストールされているサーバーで Azure DevOps Server 管理コンソールを起動し、 アプリケーション層>スケジュールされたバックアップ>スケジュールされたバックアップの作成を選択します。
ネットワーク バックアップ パスを入力し、[ 次へ] を選択します。
目的のメール アラートを選択し、[ 次へ] を選択します。
要件に基づいてバックアップ スケジュールを選択し、[ 次へ] を選択します。
構成設定を確認し、[ 確認] を選択します。
バックアップ ウィザードは、バックアップ パスが存在し、ネットワーク パスであることを確認します。
エラーのトラブルシューティング
準備チェックエラーが発生した場合は、トラブルシューティングに関する次の情報を参照してください。
エラー: サービス アカウント へのアクセス
エラー メッセージ:TF401009: The Azure DevOps service account NT AUTHORITY\LOCAL SERVICE cannot access network shares. Change to an account that can access the backup path.
このエラーは、サービス アカウントが NT AUTHORITY\LOCAL SERVICE の場合に発生します。
解決方法:
- 必要なアクセス許可を持つローカル ユーザーを作成します。
- Azure DevOps Server 管理コンソールで、[ アプリケーション層 ] 画面に移動し、[ アカウントの変更] を選択します。
- サービス アカウントを、新しく作成したローカル ユーザー アカウントに変更します。
- バックアップ プロセスをやり直して、バックアップを正常に作成し、準備チェックを再実行します。
バックアップ構成の成功:
スケジュールされたバックアップ ログ:
管理コンソールのスケジュールされたバックアップ:
エラー: ログ ファイル
ログ ファイルの場所の例:C:\ProgramData\Microsoft\Azure DevOps\Server Configuration\Logs\TFS_Scheduled Backups_0627_192409.log
ログ ファイルのエラー メッセージの例:[7/1/2024 7:28:37 AM] [Error]``Exception Message: The backup of the file or filegroup "LeadingKey" is not permitted because it is not online. Container state: "Offline" (7). Restore status: 0. BACKUP can be performed by using the FILEGROUP or FILE clauses to restrict the selection to include only online data.``BACKUP DATABASE is terminating abnormally. (type SqlException)
解決方法:
バックアップを実行する前に、すべてのファイル グループがオンラインであることを確認します。
LeadingKeyOffline の例:
SQL クエリを使用してバックアップ プロセスをテストし、特定のファイル グループに関する問題を特定して解決します。