你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建和配置数据库观察程序(预览版)

适用于: Azure SQL 数据库 Azure SQL 托管实例

本文包含在 Azure 门户中为 Azure SQL 数据库和 Azure SQL 托管实例创建、配置和启动数据库观察程序的详细步骤。

数据库观察程序不需要部署和维护任何监视代理或其他监视基础结构。 可以在几分钟内启用对 Azure SQL 资源的深度数据库监视。

有关创建和配置数据库观察程序的分步示例,请参阅快速入门:创建用于监视 Azure SQL 的数据库观察程序

若要查看如何使用 Bicep 或 ARM 模板创建和配置数据库观察程序,请参阅创建数据库观察程序

若要以编程方式管理数据库观察程序,请参阅数据库观察程序 REST API 文档。

注意

数据库观察程序当前为预览版。

先决条件

若要使用数据库观察程序,需要满足以下先决条件。

  • 需要一个活动 Azure 订阅。 如果没有帐户,请创建一个免费帐户。 你需要是订阅或资源组的“参与者”角色或“所有者”角色的成员才能创建资源。

  • 若要配置数据库观察程序,需要现有的 SQL 目标:Azure SQL 数据库、弹性池或 SQL 托管实例。

  • 必须在 Azure 订阅中注册 Microsoft.DatabaseWatcherMicrosoft.KustoMicrosoft.Network 资源提供程序。

    如果你在订阅级别有“所有者”或“参与者”RBAC 角色成员身份,则系统会自动注册资源提供程序。 否则,其中一个角色中的用户必须先注册资源提供程序,然后才能创建和配置观察程序。 有关详细信息,请参阅注册资源提供程序

  • 创建和配置观察程序和 Azure 数据资源管理器群集资源的用户必须是创建这些资源的资源组或订阅的“所有者”“参与者”RBAC 角色的成员。

    此外,如果使用 SQL 身份验证,则用户必须是资源组的“所有者”角色的成员,或者是存储 SQL 身份验证凭据的密钥保管库的“所有者”或“用户访问权限管理员”角色的成员。

  • 配置观察程序的用户必须具有对 Azure SQL 目标的管理员访问权限。 向观察程序授予对 SQL 监视目标的有限特定访问权限。 有关详细信息,请参阅授予对目标的访问权限

  • 若要向观察程序授予对 SQL 目标的访问权限,需要执行 T-SQL 脚本。 可以使用 SQL Server Management Studio (SSMS)Azure Data Studio 以及包含 SQL Server mssql 扩展的 Visual Studio Code。

  • 若要将 Azure 专用链接用于与 Azure 资源的专用连接,批准专用终结点的用户必须是“所有者”RBAC 角色的成员,或者必须具有所需的 RBAC 权限。 有关详细信息,请参阅专用终结点的审批 RBAC

创建观察程序

  1. 在 Azure 门户的导航菜单中,选择“所有服务”。 选择“监视”作为类别,然后在“监视工具”下选择“数据库观察程序”。 或者,可以在门户页面顶部的“搜索”框中键入“数据库观察程序”,然后选择“数据库观察程序”

    “数据库观察程序”视图打开后,选择“创建”

  2. 在“基本信息”选项卡上,选择观察程序的订阅和资源组,输入观察程序的名称,然后选择 Azure 区域。

    提示

    在预览期间,如果你的区域尚未提供数据库观察程序,则可以在其他区域中创建它。 有关详细信息,请参阅区域可用性

  3. “标识”选项卡上,系统分配的托管标识状态设置为“开”。 目前不支持创建没有系统分配的托管标识的观察程序。

  4. 为观察程序选择数据存储。

    默认情况下,创建观察程序还会创建 Azure 数据资源管理器群集,并将该群集上的数据库添加为收集的监视数据的数据存储。

    • 默认情况下,新的 Azure 数据资源管理器群集使用“超小,计算优化”SKU。 这是仍提供服务级别协议 (SLA) 的最经济 SKU。 以后可以根据需要缩放此群集。

    • 或者,可以在已有的 Azure 数据资源管理器群集、免费的 Azure 数据资源管理器群集实时分析上使用数据库。

      1. “数据存储”选项卡上,选择“选择数据存储”选项,然后选择“添加”
      2. 选择实时分析数据库或 Azure 数据资源管理器群集。
      3. 如果使用现有的 Azure 数据资源管理器群集,则必须启用流式引入
      4. 创建新数据库或使用现有数据库。

      注意

      选择的任何现有数据库都“必须为空”,或者必须是以前用作数据库观察程序数据存储的数据库。 不支持选择包含非由数据库观察程序创建的任何对象的数据库。

  5. 在“SQL 目标”选项卡上,添加一个或多个要监视的 Azure SQL 资源。 可以在创建观察程序时跳过添加 SQL 目标,并在以后添加它们。 在启动观察程序之前,至少需要添加一个目标。

  6. 在“查看 + 创建”选项卡上,查看观察程序配置,然后选择“创建”。 如果选择默认选项创建新的 Azure 数据资源管理器群集,部署通常需要 15-20 分钟。 如果在已有的 Azure 数据资源管理器群集、免费的 Azure 数据资源管理器群集或实时分析上选择数据库,部署通常最多需要五分钟。

  7. 部署完成后,向观察程序授予对 SQL 目标的访问权限

    • 对于对新的或现有 Azure 数据资源管理器群集,如果创建观察程序的用户是该群集的“所有者”RBAC 角色的成员,则会在创建该观察程序时自动授予对该群集中数据库的访问权限。
    • 但是,如果选择以下数据库,则必须使用 KQL 命令授予对数据存储的访问权限
      • Microsoft Fabric 中的实时分析
      • 免费 Azure 数据资源管理器群集
  8. 如果要使用专用连接,请创建托管专用终结点

启动和停止观察程序

创建观察程序时,它不会自动启动,因为可能需要其他配置。

若要启动观察程序,其必须具有:

完全配置观察程序后,在“概述”页上使用“开始”按钮启动数据收集。 几分钟后,新的监视数据会显示在数据存储和仪表板中。 如果在五分钟内未看到新数据,请参阅故障排除

如果一段时间内不需要监视 Azure SQL 资源,可以使用“停止”按钮停止观察程序。

若要重启观察程序,请停止它,然后再次启动。

修改观察程序

在 Azure 门户中,可以添加或删除目标、创建或删除专用终结点,或者对现有观察程序使用不同的数据存储。

注意

除非另有说明,否则在停止并重启观察程序后,对观察程序配置所做的更改将生效。

添加 SQL 目标到观察程序

若要为 Azure SQL 数据库、弹性池或 SQL 托管实例启用数据库观察程序监视,需要将此资源添加为 SQL 目标。

  1. 若要添加目标,请在“SQL 目标”页上选择“添加”
  2. 查找要监视的 Azure SQL 资源。 选择资源类型和订阅,然后从资源列表中选择 SQL 目标。 与观察程序类似,SQL 目标也可以位于同一 Microsoft Entra ID 租户里的任意订阅中。
  3. 若要监视数据库、弹性池或 SQL 托管实例的主副本和高可用性次要副本,请为同一资源添加两个单独的目标,并为“其中一个”资源选中“读取意向”框。
    • 选中“读取意向”框会将观察程序配置为仅监视高可用性次要副本。
    • 如果只想监视主要副本,或者此资源不存在高可用性次要副本,又或者已禁用读取扩展功能,请不要选中“读取意向”框。

连接到 SQL 目标时,数据库观察程序默认情况下使用 Microsoft Entra 身份验证。 如果希望观察程序使用 SQL 身份验证,选中“使用 SQL 身份验证”框并输入所需的详细信息。 有关详细信息,请参阅使用 SQL 身份验证的其他配置

从观察程序中删除 SQL 目标

若要删除一个或多个目标,请打开“SQL 目标”页,选择要在列表中删除的目标,然后选择“删除”

重新启动观察程序后,删除目标将停止监视 Azure SQL 资源,但不会删除实际资源。

如果删除由数据库观察程序监视的 Azure SQL 资源,还应删除相应的目标。 由于观察程序可以拥有的 SQL 目标数有限制,因此保留过时的目标可能会阻止添加新目标。

创建托管专用终结点

如果要使用专用连接从 SQL 目标收集数据、引入数据存储以及连接到密钥保管库,则必须创建托管专用终结点。 如果未创建专用终结点,数据库观察程序默认使用公共连接

若要创建托管专用终结点:

  1. 如果在为其创建了托管专用终结点的资源、资源组或资源订阅上存在只读,请移除该锁。 成功创建专用终结点后,可以再次添加只读锁。

  2. 导航到 Azure 门户中的数据库观察程序,打开“托管专用终结点”页,然后选择“添加”

  3. 输入专用终结点的名称。

  4. 选择要为其创建专用终结点的 Azure 资源的订阅。

  5. 根据要为其创建专用终结点的资源,选择“资源类型”“目标子资源”,如下所示:

    资源 资源类型 目标子资源
    逻辑服务器 Microsoft.Sql/servers sqlServer
    SQL 托管实例 Microsoft.Sql/managedInstances managedInstance
    Azure 数据资源管理器群集 Microsoft.Kusto/clusters cluster
    密钥保管库 Microsoft.KeyVault/vaults vault
  6. 选择要为其创建专用终结点的资源。 这可以是 Azure SQL 逻辑服务器或 SQL 托管实例、Azure 数据资源管理器群集或密钥保管库。

    • 为 Azure SQL 数据库逻辑服务器创建专用终结点可为该服务器上的所有数据库和弹性池目标启用数据库观察程序专用连接。
  7. (可选)输入专用终结点的说明。 这有助于资源所有者批准请求。

  8. 选择创建。 创建专用终结点可能需要一两分钟。 一旦专用终结点的预配状态从“已接受”或“正在运行”变更为“成功”,即完成专用终结点创建。 刷新视图以查看当前预配状态。

    重要

    专用终结点以“挂起”状态创建。 必须先获得资源所有者的批准,然后数据库观察程序才能使用它以连接到资源。

    若要让资源所有者控制网络连接,数据库观察程序专用终结点不会自动获得批准。

  9. 资源所有者必须批准专用终结点请求。

    • 在 Azure 门户中,资源所有者应搜索“专用链接”以打开“专用链接中心”。 在“挂起连接”下,找到创建的专用终结点,确认其说明和详细信息,然后选择“批准”
    • 还可以使用 Azure CLI 批准专用终结点请求

如果观察程序已在批准专用终结点时运行,则必须将其重新启动才能开始使用专用连接。

删除托管专用终结点

  1. 如果在为其删除了托管专用终结点的资源、资源组或资源订阅上存在删除,请移除该锁。 成功删除专用终结点后,可以再次添加删除锁。
  2. 在数据库观察程序的 Azure 门户页中,打开“托管专用终结点”页。
  3. 选择要删除的专用终结点。
  4. 选择删除

删除托管专用终结点会停止从使用此专用终结点的 SQL 目标收集数据。 删除 Azure 数据资源管理器群集的托管专用终结点会停止所有目标的数据收集。 若要恢复数据收集,请重新创建专用终结点或启用公共连接,然后重启观察程序。

更改观察程序的数据存储

观察程序只能有一个数据存储。

若要更改当前数据存储,请删除现有数据存储,然后添加新的数据存储。

  • 若要删除当前数据存储,请打开“数据存储”页,选择网格中的数据存储,然后选择“删除”

    • 删除数据存储不会删除 Azure 数据资源管理器群集或 Microsoft Fabric 中实时分析上的实际数据存储数据库。
    • 若要停止将数据收集到已删除的数据存储中,请停止观察程序。
    • 如果删除数据存储,必须先添加新的数据存储,然后才能再次启动观察程序。
  • 若要添加数据存储,请在“数据存储”页上选择“添加”,然后在 Azure 数据资源管理器群集或实时分析中选择或创建数据库。

    • 选择的数据库必须为空,或者必须是以前用作数据库观察程序数据存储的数据库。 不支持选择包含非由数据库观察程序创建的任何对象的数据库。
    • 添加数据存储后,必须授予观察程序访问权限才能使用它。 有关详细信息,请参阅授予对数据存储的访问权限
    • 重新启动观察程序后,将使用新的数据存储。

删除观察程序

如果观察程序、其资源组或其订阅上有删除,请移除该锁。 成功删除观察程序后,可以再次添加删除锁。

删除观察程序时,也会删除其系统分配的托管标识。 这会删除你授予此标识的任何访问权限。 如果稍后重新创建观察程序,则需要为新观察程序的系统分配的托管标识授予访问权限,以便对每个资源进行身份验证。 这包括:

即使使用相同的观察程序名称,也必须对重新创建的观察程序授予访问权限。

删除观察程序时,不会删除作为其目标和数据存储的 Azure 资源。 收集的 SQL 监视数据保留在数据存储中,如果以后创建新的观察程序,则可以使用与数据存储相同的 Azure 数据资源管理器或实时分析数据库。

授予对 SQL 目标的访问权限

若要允许观察程序收集 SQL 监视数据,需要执行 T-SQL 脚本,以授予观察程序特定的受限 SQL 权限。

  • 若要在 Azure SQL 数据库中执行脚本,需要服务器管理员访问包含要监视的数据库和弹性池的逻辑服务器。

    • 在 Azure SQL 数据库中,每个逻辑服务器只需为每个创建的观察程序执行一次脚本。 这会授予观察程序对该服务器上的所有现有和新数据库以及弹性池的访问权限。
  • 若要在 Azure SQL 托管实例中执行脚本,需要是 sysadminsecurityadmin 服务器角色的成员,或者对 SQL 托管实例具有 CONTROL 服务器权限。

    • 在 Azure SQL 托管实例中,需要在要监视的每个实例上执行脚本。
  1. 导航到 Azure 门户中的观察程序,选择“SQL 目标”,选择其中一个“授予访问权限”链接以打开 T-SQL 脚本,并复制脚本。 请确保为要使用的目标类型和身份验证类型选择正确的链接。

    重要

    Azure 门户中的 Microsoft Entra 身份验证脚本特定于观察程序,因为它包含观察程序名称。 有关可为每个观察程序自定义的此脚本的通用版本,请参阅使用 T-SQL 脚本授予对 SQL 目标的访问权限

  2. 在 SQL Server Management Studio、Azure Data Studio 或任何其他 SQL 客户端工具中,打开一个新的查询窗口,并将其连接到包含目标的 Azure SQL 逻辑服务器上的 master 数据库,或连接到 SQL 托管实例目标上的 master 数据库。

  3. 粘贴并执行 T-SQL 脚本,以授予观察程序访问权限。 该脚本创建一个观察程序用于连接的登录名,并授予收集监视数据的特定有限权限。

    1. 如果使用 Microsoft Entra 身份验证脚本,则在执行脚本时必须已创建观察程序。 此外,必须使用 Microsoft Entra 身份验证连接。

如果以后向观察程序添加新目标,则需要以类似的方式授予对这些目标的访问权限,除非这些目标位于已获授予访问权限的逻辑服务器上。

使用 T-SQL 脚本授予对 SQL 目标的访问权限

Microsoft Entra 身份验证与 SQL 身份验证,以及 Azure SQL 数据库与 Azure SQL 托管实例目标有不同的脚本。

重要

始终使用提供的脚本授予对数据库观察程序的访问权限。 以其他方式授予访问权限会阻止数据收集。 有关详细信息,请参阅观察程序授权

在执行脚本之前,请将脚本中可能存在的所有占位符实例(例如 login-name-placeholderuser-name-placeholderpassword-placeholder)替换为实际值。

对 Microsoft Entra 经过身份验证的观察程序授予访问权限

此脚本在 Azure SQL 数据库的逻辑服务器上创建 Microsoft Entra(以前称为 Azure Active Directory)身份验证登录名。 为观察程序的托管标识创建登录名。 该脚本授予观察程序从逻辑服务器上的所有数据库和弹性池收集监视数据的必要和充足权限。

必须使用观察程序名称作为登录名。 脚本必须在逻辑服务器上的 master 数据库中执行。 必须使用服务器管理员的 Microsoft Entra 身份验证登录名登录。

CREATE LOGIN [watcher-name-placeholder] FROM EXTERNAL PROVIDER;

ALTER SERVER ROLE ##MS_ServerPerformanceStateReader## ADD MEMBER [watcher-name-placeholder];
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [watcher-name-placeholder];
ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [watcher-name-placeholder];

对 SQL 经过身份验证的观察程序授予访问权限

使用 SQL 身份验证时需要执行其他步骤,请参阅使用 SQL 身份验证的其他配置

此脚本在 Azure SQL 数据库中的逻辑服务器上创建 SQL 身份验证登录名。 它授予登录名从逻辑服务器上的所有数据库和弹性池收集监视数据的必要和充足权限。

必须使用逻辑服务器管理员登录名在逻辑服务器上的 master 数据库中执行该脚本。

CREATE LOGIN [login-name-placeholder] WITH PASSWORD = 'password-placeholder';

ALTER SERVER ROLE ##MS_ServerPerformanceStateReader## ADD MEMBER [login-name-placeholder];
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [login-name-placeholder];
ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [login-name-placeholder];

使用 SQL 身份验证的其他配置

若要安全地存储身份验证凭据,在数据库观察程序中使用 SQL 身份验证需要额外的配置。

提示

为获得更安全、更简单且不容易出错的配置,我们建议为 Azure SQL 资源启用 Microsoft Entra 身份验证,并使用它而不是 SQL 身份验证。

若要配置数据库观察程序以使用 SQL 身份验证连接到目标,请执行以下步骤:

  1. 在 Azure Key Vault 中创建保管库,或标识可以使用的现有保管库。 保管库必须使用 RBAC 权限模型RBAC 权限模型是新保管库的默认权限模型。 如果要使用现有保管库,请确保其未配置为使用较旧的访问策略模型。

    如果要使用与保管库的专用连接,请在“托管专用终结点”页上创建专用终结点。 选择 Microsoft.KeyVault/vaults 作为“资源类型”,vault 作为“目标子资源”。 确保在启动观察程序之前专用终结点已批准。

    如果要使用公共连接,保管库必须启用所有网络的公共访问权限。 数据库观察程序不支持限制与特定网络的公共保管库连接。

  2. 在要监视的每个 Azure SQL 逻辑服务器或托管实例上创建一个 SQL 身份验证登录名,并授予具体且有限的权限。 使用提供的 SQL 身份验证访问脚本,并将登录名、用户名和密码占位符替换为实际值。 请使用强密码。

  3. 在保管库中,创建两个机密:登录名一个机密,密码一个“单独”的机密。 使用任何有效的名称作为“机密名称”,并输入在 T-SQL 脚本中使用的登录名或密码作为“机密值”

    例如,两个机密的名称可能是 database-watcher-login-namedatabase-watcher-password。 机密值是登录名和强密码。

    若要创建机密,需要是“密钥保管库机密管理人员”RBAC 角色的成员。

  4. 从每个机密的“访问控制 (IAM)”页中,为“密钥保管库机密用户”RBAC 角色中观察程序的托管标识添加角色分配。 为了遵循最低特权原则,请为每个机密添加此角色分配,而不是为整个保管库添加此角色分配。 只有保管库配置为使用 RBAC 权限模型时,才会显示“访问控制 (IAM)”页面。

  5. 向观察程序添加 SQL 目标。 添加目标时,选中“使用 SQL 身份验证”框,然后选择存储登录名和密码机密的保管库。 在相应的字段中输入登录名和密码的机密名称。

    添加 SQL 目标时,“不要”输入实际的登录名和密码。 使用前面的示例,可以输入 database-watcher-login-namedatabase-watcher-password 机密名称。

如果要在不同的 SQL 目标上使用不同的 SQL 身份验证凭证,可以使用同一保管库来存储所有机密。

注意

如果在监视程序运行时更新密钥保管库中登录名或密码的机密值,则观察程序将在 15 分钟内使用新的 SQL 身份验证凭据重新连接到目标。 如果要立即开始使用新凭据,请停止并重启观察程序。

授予对数据存储的访问权限

要随时间推移创建和管理数据库架构以及引入监视数据,数据库观察程序需要具有 Azure 数据资源管理器群集或实时分析群集中数据存储数据库的“管理员”RBAC 角色成员身份。 数据库观察程序不需要对 Azure 数据资源管理器群集有任何群集级访问权限,也不需要对同一群集上可能存在的其他数据库的任何访问权限。

如果创建新的 Azure 数据资源管理器群集和数据库,或者在创建观察程序时选择现有群集上的数据库,在用户创建观察程序是群集的“所有者”RBAC 角色的成员时,则会自动授予此访问权限。

如果更改现有观察程序的数据存储,或者在实时分析中或在免费的 Azure 数据资源管理器群集上使用数据库,则需要按本部分所述授予访问权限。

使用 Azure 门户授予对 Azure 数据资源管理器数据库的访问权限

可以使用 Azure 门户授予对 Azure 数据资源管理器群集上的数据库的访问权限:

  1. 对于 Azure 数据资源管理器群集上的“数据库”,请在“安全性 + 网络”下的资源菜单中,选择“权限”。 请勿使用群集的“权限”页。
  2. 选择“添加”,然后选择“管理员”。
  3. 在“新主体”页上,选择“企业应用程序”,然后在“搜索”框中键入观察程序的名称。
  4. 选择与观察程序同名的企业应用程序。

使用 KQL 授予对 Azure 数据资源管理器数据库的访问权限

还可以使用 KQL 命令,而非使用 Azure 门户,来授予对数据库的访问权限。 使用此方法在实时分析或免费的 Azure 数据资源管理器群集上授予对数据库的访问权限。

  1. 使用 Kusto Explorer 或 Azure 数据资源管理器 web UI 连接到 Azure 数据资源管理器群集上的数据库。

  2. 按照下表中的说明,替换以下示例 KQL 命令中的三个占位符:

    .add database [adx-database-name-placeholder] admins ('aadapp=watcher-object-id-placeholder;tenant-primary-domain-placeholder');
    
    占位符 替代功能
    adx-database-name-placeholder Azure 数据资源管理器群集或实时分析上的数据库的名称。
    watcher-object-id-placeholder “对象(主体)ID”值 (GUID),位于观察程序的“标识”页上。
    tenant-primary-domain-placeholder 观察程序的 Microsoft Entra ID 租户的域名。 此项位于 Azure 门户中 Microsoft Entra ID“概述”页面上。 也可以使用“租户 ID”GUID 值,而不是租户主域。

    如果观察程序与 Azure 数据资源管理器群集位于同一个 Microsoft Entra ID 租户中,则可以省略命令的此部分(以及前面的分号)。

    例如:

    .add database [watcher_data_store] admins ('aadapp=9da7bf9d-3098-46b4-bd9d-3b772c274931;contoso.com');
    

有关详细信息,请参阅 Kusto 基于角色的访问控制

向用户和组授予数据存储的访问权限

可以使用 Azure 门户或 KQL 命令授予用户和组对 Azure 数据资源管理器群集上或实时分析中的数据库的访问权限。 若要授予访问权限,用户必须是数据库中管理员 RBAC 角色的成员。

使用 KQL 命令授予对免费的 Azure 数据资源管理器群集中或实时分析中数据库的访问权限。 为遵循最低特权原则,建议不要将用户和组添加到“查看者”以外的任何 RBAC 角色。

重要

在授予查看数据库观察程序收集的 SQL 监视数据的权限时,请仔细考虑数据隐私和安全要求。

尽管数据库观察程序无法收集存储在 SQL 数据库中用户表内的任何数据,但某些数据集(如“活动会话”、“索引元数据”、“缺失索引”、“查询运行时统计信息”、“查询等待统计信息”、“会话统计信息”和“表元数据”)可能包含潜在的敏感数据,例如表和索引名称、查询文本、查询参数值、登录名等。

通过向无权在 SQL 数据库中查看此数据的用户授予对数据存储的访问权限,可以让他们查看他们本无法查看的敏感数据。

使用 Azure 门户授予对数据存储的访问权限

可以使用 Azure 门户授予用户和组对 Azure 数据资源管理器群集上的数据库的访问权限:

  1. 对于 Azure 数据资源管理器群集中的“数据库”,请在“安全性 + 网络”下的资源菜单中,选择“权限”。 请勿使用群集的“权限”页。
  2. 选择“添加”,然后选择“查看者”
  3. 在“新主体”页上,在“搜索”框中键入用户或组的名称。
  4. 选择用户或组。

使用 KQL 授予对数据存储的访问权限

还可以使用 KQL 命令,而非使用 Azure 门户,来授予用户和组对数据库的访问权限。 以下示例 KQL 命令授予对具有特定租户 ID 值的 Microsoft Entra ID 租户中 mary@contoso.com 用户以及 SQLMonitoringUsers@contoso.com 组的数据读取访问权限:

.add database [watcher_data_store] viewers ('aaduser=mary@contoso.com');

.add database [watcher_data_store] viewers ('aadgroup=SQLMonitoringUsers@contoso.com;8537e70e-7fb8-43d3-aac5-8b30fb3dcc4c');

有关详细信息,请参阅 Kusto 基于角色的访问控制

若要向另一租户中的用户和组授予对数据存储的访问权限,需要在 Azure 数据资源管理器群集上启用跨租户身份验证。 有关详细信息,请参阅允许跨租户查询和命令

提示

跨租户身份验证在实时分析中和免费的 Azure 数据资源管理器群集上启用。 这样,便可以向 Microsoft Entra ID 租户中的用户和组授予访问权限,使其可以查看这些数据库中的数据。

管理数据存储

本部分介绍如何管理监视数据存储,包括缩放、数据保留和其他配置。 如果使用 Azure 数据资源管理器群集上的数据库,则本部分中的群集缩放注意事项可提供帮助。 如果使用 Fabric 中实时分析中的数据库,则会自动管理缩放

缩放 Azure 数据资源管理器群集

可以根据需要缩放 Azure 数据资源管理器群集。 例如,如果不需要服务级别协议 (SLA),且查询和数据引入性能仍可接受,则可以将群集纵向缩减到“超小,开发/测试”SKU。

对于许多数据库观察程序部署,默认的“超小,计算优化” 2 实例群集 SKU 将无限期地足够。 在某些情况下,根据配置和工作负荷随时间的变化,可能需要缩放群集,以确保具有足够的查询性能并保持较低的数据引入延迟。

Azure 数据资源管理器支持垂直水平群集缩放。 通过垂直缩放,可以更改群集 SKU,这会更改每个实例(节点)的 vCPU、内存和缓存数量。 使用水平缩放时,SKU 保持不变,但群集中的实例数会增加或减少。

如果注意到以下一个或多个症状,则需要横向(水平)或纵向(垂直)扩展群集:

  • 仪表板或即席查询性能变得太慢。
  • 在集群上运行了许多并发查询,并观察到了节流错误。
  • 数据引入延迟一直高于可接受的范围。

一般情况下,数据存储中的数据量随时间推移而增加时,无需缩放群集。 这是因为仪表板查询和最常见的分析查询仅使用最新的数据,这些数据缓存在群集节点上的本地 SSD 存储中。

但是,如果运行时间范围跨越较长的分析查询,随着收集的数据总量增加且不再适合本地 SSD 存储,它们可能会随着时间推移而变慢。 在此种情况下,可能需要缩放群集来保持足够的查询性能。

  • 如果需要缩放群集,建议先“水平”缩放群集以增加实例数。 这样可以在缩放过程中保持集群对查询和数据引入的可用性。

    • 可以启用优化的自动缩放,以自动减少或增加实例数,以响应工作负荷变化或季节性趋势。
  • 你可能会发现,即使在横向扩展群集之后,某些查询仍无法按预期执行。 如果查询性能受到群集实例(节点)上可用资源的限制,可能会发生这种情况。 在这种情况下,需要“纵向”扩展群集。

    • 纵向群集缩放需要几分钟时间。 在该过程中,会有一段停机时间,观察程序可能会在此期间中断数据收集。 如果发生这种情况,请在缩放操作完成后停止并重启观察程序。

无法缩放免费的 Azure 数据资源管理器群集。 如果发现免费群集的规格不足以满足要求,请升级到完整的 Azure 数据资源管理器群集。 升级过程保留所有已收集的数据。 由于升级过程中可能会出现故障时间,因此在升级完成后,可能需要停止并重新启动的观察程序,以恢复数据收集。

管理数据保留

如果不需要较旧的数据,则可以配置数据保留策略来自动清除。 默认情况下,在 Azure 数据资源管理器群集或实时分析的新数据库中,数据保留期设置为 365 天。

  • 可以在数据库级别缩短数据保留期,也可以减少数据库中的各个的数据保留期。
  • 如果需要存储监视数据超过一年,还可以增加保留期。 数据保留期没有上限。
  • 如果为不同的表配置不同的数据保留期,仪表板可能无法按预期针对较旧的时间范围工作。 如果某些表中仍存在数据,但已在同一时间间隔的其他表中清除数据,则可能会发生这种情况。

数据库观察程序数据存储中的架构和访问权限更改

随着时间的推移,Microsoft 可能会引入新的数据库观察程序数据集,或扩展现有数据集。 这意味着数据存储中的新表或现有表中的新列可能会自动添加。

为此,数据库观察程序的托管标识必须是数据存储中“管理员”RBAC 角色的成员。 撤消此角色成员身份,或将其替换为任何其他 RBAC 角色的成员身份,可能会影响数据库观察程序数据收集和架构管理,并且不受支持。

同样,不支持在数据库观察程序数据存储中创建任何新对象,例如表、外部表、具体化视图、函数等。 可以使用跨群集和跨数据库查询从其他 Azure 数据资源管理器群集或同一群集上的其他数据库查询数据存储中的数据。

重要

如果更改数据库观察程序对其数据存储的访问权限,或者进行任何影响数据引入的数据库架构或配置更改,则可能需要将该观察程序的数据存储更改为新的空数据库,并授予观察程序对此新数据库的访问权限,以恢复数据收集并还原受支持的配置。

已停止的 Azure 数据资源管理器群集

例如,可以停止 Azure 数据资源管理器群集以节省成本。 默认情况下,在 Azure 门户中创建的 Azure 数据资源管理器群集在处于非活动状态几天后自动停止。 例如,如果将数据引入群集上唯一数据库的观察程序停止,并且不在此数据库中运行任何查询,则可能会发生这种情况。

如果在创建新的观察程序时使用默认选项创建新的 Azure 数据资源管理器群集,则会禁用自动停止行为以允许不间断的数据收集。

如果群集停止,数据库观察程序数据集合也会停止,并且监视数据不会显示在仪表板上。 若要恢复数据集合并使数据可通过仪表板访问,需要手动恢复群集。 群集运行后,重启观察程序。

如果希望群集即使在非活动状态时依然保持可用状态,也可以禁用自动停止行为。 这可能会增加群集成本。

流式引入

数据库观察程序要求包含数据存储数据库的 Azure 数据资源管理器群集已启用流式引入。 为创建新的观察程序时创建的新 Azure 数据资源管理器群集自动启用流式引入。 它还在实时分析中和免费的 Azure 数据资源管理器群集上启用。

如果要使用现有的 Azure 数据资源管理器群集,请确保首先启用流式引入。 这需要几分钟时间,并且会重启群集。

监视大型资产

若要监视大型 Azure SQL 资产,可能需要创建多个观察程序。

每个观察程序都需要 Azure 数据资源管理器群集或实时分析上的数据库作为数据存储。 创建的观察程序可以使用单一数据库作为通用数据存储,也可以将数据库分隔为单独的数据存储。 以下注意事项可帮助你为监视应用场景和要求做出最佳设计选择。

“常见数据存储”的注意事项:

  • 整个 Azure SQL 资产都有单一管理视图。
  • 但是,有权访问数据存储的用户有权访问所有监视数据。

“独立数据存储”的注意事项:

  • 独立监视 Azure SQL 资产的子集。 Azure 门户中的资产仪表板显示单个数据存储中的数据。 有权访问多个数据存储的用户可以使用跨群集或跨数据库 KQL 查询,通过单个查询访问多个数据存储中的监视数据。
  • 由于 Azure 数据资源管理器和实时分析中的数据访问按数据库进行管理,因此你可以以精细的方式管理对资产子集的监视数据的访问。
  • 可以将多个数据库放置在同一 Azure 数据资源管理器群集上,以共享群集资源并节省成本,同时仍将数据隔离在每个数据库中。
  • 如果需要完全分隔环境(包括对 Azure 数据资源管理器群集的网络访问),可以将不同的数据库放置在不同的群集上。