将Azure SQL 数据库与 Azure DevOps Server 配合使用
Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019
使用本文中的步骤通过 Azure SQL 数据库 配置 Azure DevOps Server。 与使用本地 SQL Server 相比,此拓扑还有其他几个步骤。
要求
- Azure SQL 数据库只能与 Azure DevOps Server 2019 及更高版本一起使用。
- 必须在 Azure VM 上安装 Azure DevOps Server。
- VM 必须启用系统托管标识,该标识用于向 Azure SQL 数据库进行身份验证。
- VM 必须加入域,但不能加入工作组。
- Azure SQL 数据库必须是单一数据库。 Azure DevOps Server 2022 及更高版本支持托管实例和弹性池。
支持所有普通用途和高级 SKU。 还支持标准 SKU S3 和更高版本。 不支持基本 SKU 和标准 SKU S2 及更低版本。 使用 Azure SQL 数据库 的 Azure DevOps Server 配置不支持具有 SQL Server Analysis Services 报告功能的旧版 SQL Server Reporting Services。 相反,可以使用 Azure DevOps Analytics。
仅当使用 Azure SQL 数据库时,才支持从 Team Foundation Server 2015 及更新版本升级到 Azure DevOps Server。 Azure SQL 数据库不支持加密存储过程。
安装 Azure SQL 数据库
在虚拟机上配置托管标识。 目前我们只支持由系统管理的标识。
可以使用所有标准机制来运行配置,包括:
若要设置新的 Azure DevOps Server 实例,请创建两个 Azure SQL 数据库:
AzureDevOps_Configuration
AzureDevOps_DefaultCollection
注意
如果使用现有数据库,则可以跳过此步骤:
- 升级新版本的 Azure DevOps Server。
- 将 Azure DevOps Server 的最新实例迁移到 Azure SQL 数据库。
为 Azure SQL 数据库 服务器配置 Azure Active Directory 身份验证。 使自己成为服务器上的 Active Directory 管理员。 需要对数据库具有管理员权限才能完成剩余的配置步骤。 稍后可以更改此权限。
如果使用多个服务器,请启用托管标识或标识,以登录到 Azure SQL 数据库,并为其授予适当的权限。 使用 SQL Server Management Studio 连接到数据库服务器。 使用 Azure Active Directory 用户通过 Active Directory 身份验证进行连接。 如果登录到 SQL 身份验证下的Azure SQL 数据库,则无法操作 Azure Active Directory 用户。
a. 对
main
数据库运行以下 T-SQL 命令:CREATE USER [VMName] FROM EXTERNAL PROVIDER ALTER ROLE [dbmanager] ADD MEMBER [VMName]
将 VMName 替换为要添加到数据库的托管标识的虚拟机的名称。
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 部署的现有数据库”。
在配置向导中访问“数据库”页时,请指定Azure SQL 数据库服务器实例。 通常,服务器实例采用 SQLInstanceName.database.windows.net 的形式。
现在,你有一个在 Azure SQL 数据库 上运行的 Azure DevOps Server 实例。
从本地 SSMS 连接到 Azure SQL 数据库
执行以下步骤,从本地 SSMS 连接到 Azure SQL 数据库:
通过 SQL Server Management Studio 使用 SSMS,从运行在与专用终结点相同的 VNET 中的 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 DevOps Server 的 IP 地址或子网的入站连接。 为此,请转到:Azure 门户>Azure SQL 数据库>设置>防火墙和虚拟网络> 添加新规则,以允许从 Azure DevOps Server 的公共 IP 地址或子网进行访问。 |
工具 | - 已在 Azure 中预配并可访问的 SQL 数据库。 服务器名称、数据库名称和身份验证方法的记录。 - 在本地环境中运行的 Azure DevOps Server 2022。 - 安装在安装了 Azure DevOps Server 的同一台计算机上的 SSMS。 |
连接到 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\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 查询测试备份过程,以识别并解决特定文件组的任何问题。