You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana连接SQL Server查询报错:AS关键字附近语法错误求助

解决Grafana 9.3.6连接SQL Server的查询语法错误及时间序列展示问题

问题分析

报错db query error: mssql: Incorrect syntax near the keyword 'AS'核心原因是$__time()宏在处理复杂时间表达式(而非直接列名)时,语法展开不符合SQL Server的语法要求,导致别名定义逻辑冲突。

修正后的查询语句

替换$__time()宏为手动指定时间列别名,优化WHERE条件并添加Grafana时间范围过滤逻辑,确保查询适配SQL Server语法且符合时间序列展示要求:

SELECT 
    DK_KOD AS metric,
    DATEADD(HOUR, -3, MQ_TAR_ZMN) AS time,
    SUM(ADET) AS value
FROM 
    [MYDB].[dbo].[Sayi] 
WHERE
    DK_KOD = 'XYZ' 
    AND TXN_KOD IN ('A', 'B', 'C', 'D', 'E', 'F', 'G')
    AND $__timeFilter(DATEADD(HOUR, -3, MQ_TAR_ZMN))
GROUP BY
    DK_KOD, DATEADD(HOUR, -3, MQ_TAR_ZMN) 
ORDER BY
    time

关键调整说明

  • 移除$__time()宏,手动将时间表达式别名设为time:Grafana默认识别time列为时间序列的X轴,彻底避免宏展开导致的语法冲突。
  • 用TXN_KOD IN (...)替代多个OR条件:简化查询结构,提升执行效率与可读性。
  • 添加$__timeFilter():让查询结果自动匹配Grafana面板选择的时间范围,避免返回全量数据。
  • 显式指定metric和value别名:适配Grafana时间序列面板的字段映射规则,确保数据正确渲染为时间曲线。

面板配置要点

在Grafana面板的Query选项卡中:

  • 确认数据源为目标SQL Server实例。
  • Format as下拉框选择Time series。
  • 若字段未自动识别,可手动在Fields配置中映射:将time设为Time字段,value设为Value字段,metric设为Metric字段。

内容的提问来源于stack exchange,提问作者Halk Bank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:55:03