Text-to-SQL 如何接企业数据库:只读权限、指标口径与查询验收

让 AI 用自然语言查数据库之前,先限定指标、表和行权限,再验证生成查询、执行成本与结果;附收入问题的教学验收方法。

数据库问答的四道执行边界:明确指标(固定业务定义、可信身份与范围);验证计划(SQL 结构与对象、参数和函数白名单);受限执行(数据库行权限、时间和资源预算);复核结果(指标版本与时间、脱敏及参考答案)
教学执行流程;SELECT 并非完整安全保证。本站原创教学示意,不代表产品界面或客户案例。

先说结论

Text-to-SQL 应把自然语言解释、查询生成与数据库执行分开。服务端固定用户权限和指标定义,验证 SQL 结构、允许对象与资源预算,再以受限只读身份执行。查询能运行不代表指标正确,SELECT 也不自动代表无副作用或无泄露。

读完你会得到

  • 指标先有业务定义,再允许生成查询。
  • 权限在执行服务与数据库落实,不靠提示词限制。
  • 正确性、访问边界和运行成本分别验收。

业务方问“上个月收入是多少”,模型可能给出一条能执行的 SQL,但把下单额当成已收款额,或者把两张明细表连接后重复累加。接入数据库的目标是得到可复核的业务答案,不能只验收是否生成了一段查询。

配套资料与延伸阅读

先确定一个指标的业务含义

收入问题的最小指标约定
项目教学约定需确认的例外
计入事件已完成收款的交易退款按何时发生抵扣
时间窗口按业务时区的上月完整区间跨时区与月底边界
对象范围当前用户获准查看的部门调岗后历史访问
金额单位最小货币单位与币种分别保存不直接相加不同币种
去重键同一支付事件只计一次订单多明细、部分支付

这些约定是示例,财务部门需要确认实际口径。没有统一收入定义时先列出可能解释,让用户选择;不能随机取一个字段再在自然语言里称它为收入。使用的数据日期与指标版本也应写入结果。

模型只获取受控的数据说明

给模型的数据目录包括获准查询的视图、字段含义、主键、关联方式和指标示例。避免一次暴露全部库结构,更不把真实密钥、用户令牌或未经许可的明细放入提示。业务系统认证后的部门和租户信息由服务端注入,不能从用户聊天里认领。

BigQuery 的官方指南提供自然语言生成、解释和改写 SQL 的能力,同时要求配置相应角色。该产品能力不是查询正确的证明。以下执行网关设计是本站建议,并非声明每个数据库或工具已经内置这些防护。

本节依据: [1] Google Cloud BigQuery

把候选 SQL 当作需要检验的输入

使用与实际数据库方言匹配的解析器,验证只包含允许的查询结构、表、列、函数和参数。拒绝多语句、写入、未经允许的动态执行和导出路径。字符串搜索 SELECT 不足以完成校验,合法查询里也可能调用带副作用或外部访问的函数。

可先生成业务查询计划:时间区间、分组维度、筛选范围和关联键,经规则核验后再生成参数化 SQL。模型生成的连接条件也要检查,禁止对高基数明细直接相乘后求和。用户补充范围后重新生成计划,不能在历史查询上机械追加片段。

在数据库落实可见行与最小权限

只读账号只允许所需视图与函数,不持有建表、导出、管理和写权限。需要租户或部门隔离时在可信执行层与数据库策略落实;连接池复用前清理授权上下文,防止上个用户的会话状态沿用。

PostgreSQL 文档说明行级安全可以按用户限制可见行,但超级用户和 BYPASSRLS 角色会绕过,表所有者通常也会绕过。不要用这些身份测试通过后就认为普通用户隔离有效。涉及视图与函数时,还要按实际版本核对执行身份及权限语义。

视图或 SECURITY DEFINER 函数可能以所有者身份访问数据。用实际应用角色、通过同一个视图或函数执行跨租户反例;直接表查询被隔离,不证明间接路径也被隔离。

汇总只覆盖当前身份可见的行与获准指标、维度,不为“全公司总数”改用更大权限账号。确需独立汇总结果时,使用单独授权的受控指标接口,并按其披露规则验收。

本节依据: [2] PostgreSQL

查询前后都限制资源与结果

限制语句时间、扫描或计算预算、返回行数、并发与允许执行的时段。LIMIT 主要限制结果行数,不保证聚合扫描很小。云数仓可利用查询计划和成本预估,具体能力以实际产品为准;预估通过后仍要有执行时的上限。

回传模型的数据应遵循字段最小化和脱敏规则。高敏明细不要因为 SQL 成功就展示。零行结果要区分权限范围内确实无匹配、条件未确认和资料未同步。错误提示保留诊断编号,面向用户避免暴露表名、凭证或内部连接地址。

用小样本验证业务结果和越权边界

收入问题的教学验收

  1. 准备参考数据

    用脱敏或虚构记录包含部分付款、退款、多币种和月底交易。

    产出:参考数据版本
  2. 写出参考答案

    由业务口径和独立受控查询计算结果,记录中间汇总。

    产出:参考 SQL 与金额
  3. 制造误差

    加入同名部门、重复明细、模糊时间和另一个租户记录。

    产出:不能遗漏的失败题
  4. 比较执行

    分别检查计划、可见行、最终结果与资源消耗。

    产出:每题证据和判定

再测试用户要求“忽略权限看全公司”、让模型调用导出函数、超大时间区间和多轮修改部门。所有拒绝都应在执行前或数据库权限层生效,而不是答案生成后删去敏感文字。也要检查拒绝后不会自动改用权限更大的备用账号。

上线范围从固定指标开始

先开放少数稳定指标与明确维度,记录每次问题、指标版本、执行身份、查询指纹、结果时间和失败原因。日志脱敏并限制查阅,不把原始结果无限保存。错误频繁的指标暂停开放,修复规则后用同一参考题回放。

不要一开始允许模型查询任意业务表。新增指标应同时更新目录、权限、预算和测试集;业务指标定义改变时保留版本,解释旧答案为什么不同。读者能复算且能发现权限边界,才算可用的数据库问答。

常见问题

只用数据库只读账号就够安全吗?

不够。还要限制可读对象、可见行、允许函数、结果字段与资源预算;只读查询仍可能泄露数据或消耗大量资源。

能执行的 SQL 为什么还会答错?

可能选错指标、时间、币种或关联方式。需要参考数据与独立答案检查业务结果,语法与执行成功只能证明查询可运行。

资料来源与核对说明

文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。

  1. Write queries with Gemini assistanceGoogle Cloud BigQuery

    核验于2026-10-09。官方说明自然语言生成和解释SQL及所需角色;可执行不等于业务正确。本站执行网关与题集为教学设计,不声称产品默认具备全部防护。

  2. PostgreSQL 18: Row Security PoliciesPostgreSQL

    核验于2026-10-09,当前页面为PostgreSQL 18。官方说明行安全、默认拒绝与超级用户、BYPASSRLS、所有者绕过条件;视图与函数需核对实际执行身份。

把文章方法用于你的真实业务

带上流程、样例和目标,添加企业微信沟通。先确定项目范围与验收方式,再安排实施。

查看企业 AI / FDE 服务 →
相机、麦克风和布光台上的雕塑,表现图片、视频与声音的创作
AI 生成 · 内容创作场景示意

把你正在做的事,
拿来一起聊聊。

还没有完整方案也没关系。选一个方向,带着下面几条信息联系团队,我们先了解问题,再确认下一步。

企业 AI / FDE 项目

先从一段具体流程说起。

  • 我们目前怎样完成这项工作?
  • 哪一步最费时间,或经常出错?
  • 已有的资料、系统和期望结果是什么?
Shopify 建站与经营

有店铺的话,可以一并发来链接。

  • 店铺是准备上线,还是已经在运营?
  • 销售什么商品,面向哪些市场?
  • 希望先解决哪个页面或经营问题?
内容创作与工具使用

说明准备制作的内容,或遇到的操作问题。

  • 想做图片、视频、配音,还是图文?
  • 已有素材、参考风格和使用场景是什么?
  • 如果使用时遇到问题,具体停在哪一步?
扫码添加随心创技术客服企业微信

微信扫码,发来你的问题

可以直接按提纲描述,也可以先发一句话。人工服务会在确认范围后单独报价。

手机上可保存二维码后识别。