用途:说明如何把 LangChain 或 LlamaIndex 从 Python 接到 Azure SQL Database,并指出连接测试无法暴露的三类问题:方言提示词、向量检索索引、访问控制。
主要能力与用法:LangChain 侧用 SQLDatabaseToolkit(四个工具)与 create_sql_agent;LlamaIndex 侧用 NLSQLTableQueryEngine。安装示例:python -m venv .venv && .venv/bin/pip install "langchain==1.3.18" "langchain-community==0.4.2" "langchain-classic==1.0.8" "langchain-sqlserver==1.0.1" "llama-index-core==0.14.24" "sqlalchemy==2.0.52" "pyodbc==5.3.0"。连接用 SQLDatabase.from_uri(f"mssql+pyodbc:///?odbc_connect={odbc}")。
关键限制:默认 agent 提示词只写“limit”,未教 T-SQL,需替换 prefix(保留 {dialect}、{top_k}),改用 SELECT TOP 与 ORDER BY ... OFFSET ... FETCH NEXT;LlamaIndex 通过 text_to_sql_prompt 做同样修正。langchain-sqlserver 建表用 PRIMARY KEY NONCLUSTERED,形成堆表,CREATE VECTOR INDEX 报 Msg 42254,需先建聚集索引,且需 100 个非空向量(Msg 42266);包内无近似检索路径,检索为全扫描。LlamaIndex 无 Azure SQL 向量存储。include_tables 只影响提示词,不限制连接;只读需专用最小权限登录;sample_rows_in_table_info 默认 3,会泄露真实行,应设为 0。
适用场景:在 Azure SQL 上做结构化问答、文本转 SQL 与向量检索的集成开发与安全加固。缺失信息:官方文档、收费与平台支持范围暂未提供。