Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019
使用本文中的步骤通过 Azure SQL 数据库 配置 Azure DevOps Server。 与使用本地 SQL Server 相比,此拓扑还有几个步骤。
先决条件
类别 | 要求 |
---|---|
Azure DevOps Server 版本 | Azure SQL 数据库只能与 Azure DevOps Server 2019 及更高版本一起使用。 |
安装环境 | 安装在 Azure VM 上的 Azure DevOps Server。 |
身份验证 | 虚拟机(VM)已启用系统托管标识,用于向 Azure SQL 数据库进行身份验证。 |
域成员身份 | VM 已加入域,但未加入工作组。 |
数据库类型 | Azure SQL 数据库是单一数据库。 Azure DevOps Server 2022 及更高版本支持托管实例和弹性池。 |
防火墙规则 | Azure SQL 数据库防火墙规则允许来自托管 Azure DevOps Server 的 IP 地址或子网的入站连接。 为此,请转到:Azure 门户>Azure SQL 数据库>设置>防火墙和虚拟网络> 添加新规则,以允许从 Azure DevOps Server 的公共 IP 地址或子网进行访问。 |
工具 | - 已在 Azure 中预配并可访问的 SQL 数据库。 服务器名称、数据库名称和身份验证方法的记录。 - 在本地环境中运行的 Azure DevOps Server 2022。 - 安装在安装了 Azure DevOps Server 的同一台计算机上的 SSMS。 |
支持所有常规用途和高级 SKU,以及标准 SKU S3 及更高版本。 但是,不支持基本 SKU 和标准 SKU S2。
使用 Azure SQL 数据库的 Azure DevOps Server 配置不支持具有 SQL Server Analysis Services 报告功能的旧版 SQL Server Reporting Services。 相反,可以使用 Azure DevOps Analytics 进行报告和分析。
Azure SQL 数据库不支持加密存储过程。
安装 Azure SQL 数据库
在虚拟机上配置托管标识。 目前我们只支持由系统管理的标识。
可以使用所有标准机制来运行配置,包括:
若要设置新的 Azure DevOps Server 实例,请创建两个 Azure SQL 数据库:
- AzureDevOps_Configuration
- AzureDevOps_DefaultCollection
为 Azure SQL 数据库服务器配置 Microsoft Entra ID 身份验证 。 使自己成为服务器上的 Microsoft Entra 管理员。 需要对数据库具有管理员权限才能完成剩余的配置步骤。 稍后可以更改此权限。
a。 在主数据库上运行以下 T-SQL 命令。 将 VMName 替换为要添加到数据库的托管标识的虚拟机的名称:
CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [dbmanager] ADD MEMBER [VMName]
b. 在配置和所有集合数据库上运行以下 T-SQL 命令:
CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [db_owner] ADD MEMBER [VMName] ALTER USER [VMName] WITH DEFAULT_SCHEMA=dbo
数据库现在允许 VM 通过托管标识进行通信。
备注
如果对 Azure VM 进行修改,例如还原快照或重命名 VM,请按照以下步骤恢复网络连接:
- 从主数据库和所有 Azure DevOps 数据库中删除 [VMName] 用户。 如果 [VMName] 拥有数据库对象,则可能需要 将其所有者更改为 其他用户,例如 DBO,然后在下一步之后返回。
- 使用当前 [VMName] 重新运行以前声明的 SQL 查询,即使它保持不变也是如此。
- 重启 Azure DevOps Server 的服务。
配置 Azure DevOps Server
返回到 Azure DevOps Server 配置向导。 如果设置了新实例,请选择“ 这是一个新的 Azure DevOps Server 部署”。 如果升级或迁移数据库中的现有数据,请选择 “我有用于此 Azure DevOps Server 部署的现有数据库”。
在配置向导中访问“数据库”页时,请指定Azure SQL 数据库服务器实例。 通常,服务器实例采用 SQLInstanceName.database.windows.net 的形式。
现在,你有一个在 Azure SQL 数据库 上运行的 Azure DevOps Server 实例。
从本地 SSMS 连接到 Azure SQL 数据库
执行以下步骤,从本地 SSMS 连接到 Azure SQL 数据库:
使用 SQL Server Management Studio(SSMS),通过与专用终结点位于同一虚拟网络的运行中的 VM,导出数据从 SQL 到 Blob 存储/文件共享。
可以使用 SQL Server Management Studio 导出数据层应用程序向导将 Azure SQL 数据库导出到 .bacpac 文件。 可以将 .bacpac 文件存储在 Azure Blob 存储或文件共享中。
从 SSMS>任务>导出数据层应用程序 向导中,右键单击逻辑 SQL Server 上的 SQL 数据库。
选择下一。
选择要存储 BACPAC 文件的位置。
选择 关闭。
DAC 包位于此处:C:\Users\{sample-user-name}\OneDrive - Microsoft\Documents\SQL Server Management Studio\DAC Packages
。
从 Azure DevOps Server 2022 连接 Azure SQL 数据库
从 Azure DevOps Server 2022(本地)连接 Azure SQL 数据库涉及配置访问权限、确保连接和使用适当的凭据。 执行以下步骤从 Azure DevOps Server 2022 连接 Azure SQL 数据库。
连接到 Azure SQL 数据库
获取 Azure SQL 数据库连接详细信息:
- 服务器名称:
<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 数据库:c. 启动 SSMS。 d。 在“连接到服务器”窗口中:
- 输入服务器名称:
<your-server-name>.database.windows.net
- 选择“身份验证:SQL Server 身份验证”。
- 输入用户名和密码。
- 选择“连接”。 连接后,Azure SQL 数据库将列在 SSMS 中的对象资源管理器下。
- 输入服务器名称:
测试连接性: 在 SSMS 中执行查询或命令:
SELECT @@VERSION;
此查询返回 Azure SQL 数据库的 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 数据库,实现简化的数据库管理和与开发和部署过程的集成。 根据组织的策略和要求调整配置和安全措施。
在 Azure DevOps Server 2022 中使用 Azure SQL 数据库连接
准备 Azure DevOps Server:
a。 确保在本地环境中安装和配置 Azure DevOps Server 2022。</
b. 具有创建和管理管道的适当权限,可以访问 Azure DevOps Server。设置 Azure DevOps 项目和存储库(如果尚未完成):
a。 创建新的或使用现有的 Azure DevOps 项目。
b. 设置 Git 或 TFVC 存储库以存储管道定义和脚本。创建一条管道:
a. 转到 Azure DevOps 项目。
b. 选择 管道>管道>新管道。
c. 根据要求选择适当的管道模板。 对于 Azure SQL 数据库,可以从空白作业开始,或者选择适合您的部署需求的模板(例如 Azure Pipeline)。
d. 编辑管道 YAML 文件或使用经典编辑器定义管道阶段和任务。添加要部署到 Azure SQL 数据库的任务:
任务:SQL Server 数据库部署: 使用
SqlAzureDacpacDeployment
任务将更改部署到 Azure SQL 数据库。 示例 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 数据库运行 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 数据库。
- 查看日志和输出以排查部署过程中的任何问题。
提示
- 与发布管道集成: 将构建管道与发布管道集成,用于更加复杂的部署场景和审批流程。
- 进行增量数据库更改: 使用 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\Azure_DevOps_Server_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 查询测试备份过程,以识别并解决特定文件组的任何问题。