你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用以下清单解决在 Microsoft Sentinel data lake 中使用 KQL(Kusto 查询语言)查询和作业时的常见问题。
在运行查询或作业之前检查先决条件。 有关详细信息,请参阅 Microsoft Sentinel data lake 的角色和权限。
在执行 KQL 查询或作业之前,请确保选择了正确的工作区。
确认所有引用的表和工作区都存在且可访问。
仅使用支持的 KQL 运算符和命令来避免执行错误。
使用筛选器(如时间范围)调整查询,以避免查询超时。
特定于作业的验证:
在通过作业创建新的自定义表时,请确保你为目标工作区选择了正确的角色。 有关详细信息,请参阅 Microsoft Sentinel data lake 的角色和权限。
在 KQL 编辑器中测试查询,以便在将其作为作业提交之前捕获语法和逻辑错误。
确保作业名称在租户中的所有作业(包括 Notebooks 作业)中是唯一的。
验证查询输出架构是否与列名称和数据类型中的目标表保持一致。
验证作业状态并跟踪进度。
有关特定错误消息和解决方法步骤,请参阅以下错误表。
注释
提升到分析层的数据可能需要 15-30 分钟才能显示在高级搜寻中,具体取决于数据大小和查询复杂性。 如果作业查询超过一小时限制,部分结果可能会被推广。
KQL 查询错误消息
| 错误消息 | 根源 | 建议操作 |
|---|---|---|
| 找不到表或为空。 | 引用的表不存在、为空或用户没有所需的权限。 | 验证表名称、确认数据可用性,并确保用户具有适当的访问权限。 有关详细信息,请参阅 Microsoft Sentinel data lake 的角色和权限。 |
| 无法访问已释放的对象。 | 后端服务中出现内部服务错误。 | 重试。 如果问题仍然存在,请开具支持票证。 |
| 查询在网关处超时。 | 没有时间筛选器的长时间运行查询。 | 强制实施时间筛选器或应用额外的筛选器。 |
| 未设置时间范围。 添加时间参数来控制查询成本并避免超时。 | 回溯不受限制的查询可能会导致超时。 | 强制实施时间筛选器或应用额外的筛选器。 |
| 不支持的函数。 修改查询以删除 Data Lake 中不支持的函数:ingestion_time()。 | Data Lake 上的查询不支持该 ingestion_time() 函数。 |
从查询中删除 ingestion_time() ,然后重试。 |
| 查询执行时间超过了分配的超时限制,已被中止。 | • 查询可能过于复杂或检索大型数据集,从而导致超过允许的执行时间。 • 低效的查询结构,例如不必要的联接或过度筛选可能会导致性能降低。 |
优化查询,然后重试。 |
| 401-Unauthorized:这通常表示永久性错误,重试不太可能有所帮助。 错误详细信息:DataSource={clusterUri}、DatabaseName={databaseName}。 | • 用于访问 Data Lake 的身份验证令牌可能无效或已过期。 • 您没有查询指定数据库所需的权限。 |
重新进行身份验证并验证访问权限。 |
| 调用外部 URL 的查询。 Lake 中的查询不支持调用外部 URL。 | 在 Data Lake 环境中执行的 KQL 查询不支持调用外部终结点。 | 从查询中删除外部 URL 调用。 |
| 查询执行已超过允许的限制。 | 数据湖中的 KQL 交互式查询限制为 500,000 行。 | 在 KQL 作业中运行查询或使用笔记本。 |
| 找不到表或可能没有数据。 请检查表是否存在、具有数据或用户是否具有权限。 | • 数据库中可能不存在指定的表。 • 可能没有权限访问这些表。 • 表可能存在,但没有数据,因此没有有意义的输出。 |
确认表是否存在、数据可用性和用户权限。 |
查询文本超出了内部扩展后允许的最大长度。 当运算符与包含大量项列表的变量一起使用时 in() ,可能会发生这种情况。 |
in()• 运算符可能与大型列表一起使用,导致扩展查询超出查询限制。• 查询可能包含动态生成的内容,导致长度过长。 |
减小列表的大小或简化查询。 |
| 查询执行已超过允许的限制。 | 优化查询,然后重试。 | |
语义和语法错误,例如:
|
查询格式不正确,引用不存在的表或列,或者使用无效标量函数。 | 核查您的查询,然后重试。 |
| 客户端无权访问任何工作区,或客户端在范围内提供了无效的工作区。 | 查询使用无效的工作区 ID。 | 输入正确的工作区 ID,然后重试。 |
| 意外的控制命令 | 不允许使用控件命令(例如 show) 。 |
无需执行任何操作。 |
KQL 作业错误消息
| 错误消息 | 根源 | 建议操作 |
|---|---|---|
| 目标工作区中不存在指定的目标表。 | 表名称不正确、已删除或尚未创建。 | 在提交作业之前,请验证表名并确保它存在于目标工作区中。 |
| 指定的源表不存在。 | 指定的工作区中不存在一个或多个源表,或者这些源表最近从您的工作区中被删除。 | 验证指定工作区中是否存在源表。 |
| 查询中提供的工作区或数据库名称无效或不可访问。 | 引用的数据库不存在或作业缺少访问权限。 | 确认数据库名称正确且可从作业上下文访问。 |
| Azure 订阅中不存在指定的目标工作区。 | 工作区 ID 或名称无效,或者租户中的任何 Azure 订阅中不存在。 | 验证工作区 ID。 |
| 查询输出架构与目标表的架构不匹配。 | 查询输出中的列数或名称不同于目标表架构。 | 更新查询或表架构以确保它们保持一致。 |
| 查询输出中一列或多列的数据类型与目标表架构不匹配。 | 查询输出和表架构之间的类型不匹配,例如字符串与日期/时间。 | 确保查询输出中的每个列都与表架构中预期的数据类型匹配。 |
| 由于语法或逻辑错误,KQL 查询未能执行。 | 查询包含无效的语法、不支持的函数、不支持的数据类型或不正确的引用。 | 使用 KQL 作业中的查询之前,在 KQL 查询或 Azure 数据资源管理器中测试查询。 |
| KQL 作业名称必须是唯一的。 | 该作业名称已存在于租户中。 | 为作业提供唯一名称。 |
| 列名称无效。 它应以字母开头,仅包含字母、数字和下划线(_),_ResourceId。 | 作业的输出列包含不受支持的格式。 | 更新查询并重命名列。 |