ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ToolJet 连接 MS SQL Server / Azure SQL 数据库完整指南:数据源配置、SQL 与 GUI 查询、加密与超时设置

ToolJet 连接 MS SQL Server / Azure SQL 数据库完整指南:数据源配置、SQL 与 GUI 查询、加密与超时设置 ToolJet 连接 MS SQL Server / Azure SQL 数据库完整指南数据源配置、SQL 与 GUI 查询、加密与超时设置【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJetToolJet 内置的 MS SQL Server 数据源插件仓库实现位于 plugins/packages/mssql支持连接自建的 Microsoft SQL Server 实例与云端的 Azure SQL 数据库用于在低代码应用中读取与写入数据。阅读本文后你将掌握在 ToolJet 中完成数据源连接配置、使用 SQL 模式与参数化查询规避注入风险、通过 GUI 模式无代码完成增删改与批量更新以及开启加密传输与自定义查询超时等完整实战能力。本文以官方文档 docs/docs/data-sources/mssql.md 为主体并结合仓库内插件源码与操作 Schema 逐层印证。数据源概览与入口ToolJet 可以将 MS SQL Server 与 Azure SQL 数据库作为数据源在其上创建查询以读和写数据。建立连接的入口有两个点击查询面板Query Panel上的 Add new Data source按钮从 ToolJet 仪表盘进入 Data Sources 数据源页面 添加。:::info 网络可达性前置条件 如果你自托管 ToolJet请务必确保数据库的Host/IP能从你的 VPC 内被访问如果使用 ToolJet Cloud则需要将 ToolJet 的出口 IP 加入数据库的白名单。 :::连接表单在源码层面由数据源 Schema manifest.json 驱动渲染界面包含的字段与插件SourceOptions接口见 types.ts一一对应。建立连接核心配置项详解ToolJet 连接 MS SQL Server 需要填写以下核心信息原始文档在字段说明处误写为 PostgreSQL实际这些字段作用于 SQL Server已在下方按 MSSQL 语境校正配置项说明默认值Host数据库主机地址IP 或域名localhostPort数据库监听端口1433Username登录用户名无Password登录密码无Connection Options附加连接选项键值对形式见下文无Azure使用 Azure SQL 数据库时开启该选项会强制走加密连接关闭从插件 Schema 中还能看到表单支持更多精细化选项例如Connection typeManual connection逐项填写 Host/Port/Database 等或Connection string粘贴Serverlocalhost,1433;Databasemydb;User Idsa;Passwordmypass;形式的连接串选择连接串模式时必填connection_stringInstanceSQL Server 命名实例的名称对应instanceNameAuthentication typeSQL Server用户名密码或Azure AD – Service Principal需要填 Tenant ID、Client (Application) ID 与 Client secret适用于 Azure SQL 的企业级免密认证SSL/TLS开启后可选None/CA certificate/Self-signed certificate三种证书模式并在需要时粘贴 CA 证书、客户端密钥、客户端证书与根证书SSH tunnel通过 SSH 服务器代理访问处于私有网络中的数据库可选择私钥或密码认证Allow dynamic connection parameters开启后允许在查询运行时动态覆盖默认 Host 与 Database。上述敏感字段password、各证书、私钥、连接串、Client secret 等在 Schema 的tj:encrypted数组中声明落库时会被加密保存。:::note 权限最小化建议 官方文档建议为 ToolJet新建一个独立的数据库账号以便精确控制 ToolJet 对库的访问级别而不是直接使用高权限账号。 :::连接建立后插件会按dataSourceId 配置哈希缓存 Knex 连接实例参见 index.ts重复查询复用连接池减少握手开销当数据源配置被更新时缓存自动失效重建。Connection Options 键值对连接选项Connection Options以键值对形式填写作为额外的 driver 层配置合并进连接。文档给出的示例为KeyValuetrustServerCertificatetrue关于取值的底层行为插件在 sanitizeOptions / interpretValue 中会把形如true/false的字符串解析为布尔值、把纯数字字符串解析为整数其余保留为字符串然后通过 buildConnection 中的options: { ...connection_options }透传给底层驱动。这意味着你可以按需注入加密、证书校验、登录超时等各类驱动级选项例如使用自签名证书时设置trustServerCertificatetrue。自签名证书下的加密连接Enabling Encryption为增强数据传输安全性即便使用自签名证书也可以开启加密。官方文档给出两端配置步骤服务端SQL Server配置创建并安装自签名证书生成自签名证书并安装到 SQL Server 实例上强制加密在 SQL Server 实例上配置强制加密连接Force Encryption若使用Azure SQL则在 Azure 门户中打开数据库的Encryption开关。客户端ToolJet 侧配置在 Connection Options 中设置trustServerCertificate true该选项会跳过证书链校验是使用自签名证书时的必要配置因为此时客户端没有可信 CA 可验证服务端证书链。在源码实现中当在表单里选择SSL/TLS并指定证书类型为CA certificate或Self-signed certificate时插件会构造对应的cryptoCredentialsDetails配置ca、cert、key并控制rejectUnauthorizedazure开关与 SSL 开关任一开启都会让驱动encrypt: true见 buildConnection。查询 MS SQL Server / Azure SQL 数据库数据源添加完成后即可创建查询对数据库进行读写。查询统一在应用构建器底部的 Query Panel查询面板 中创建两种操作模式由 operations.json 定义默认模式为sql。创建查询的步骤点击编辑器底部查询管理器Query Manager的 Add按钮在数据源下拉中选择上一步添加的 SQL Server / Azure SQL 数据源。SQL 模式SQL 模式用于直接编写原生 SQL 查询操作数据库使用步骤从模式下拉框选择SQL mode在编辑器中输入 SQL 语句点击Run运行查询。示例SELECT * FROM users插件侧SQL 模式对应run()中的handleRawQuery分支它读取query与query_params通过knex.raw(query, params).timeout(STATEMENT_TIMEOUT)执行因此所有查询都被统一施加了超时控制见 index.ts。参数化查询Parameterized QueriesToolJet 支持参数化 SQL 查询一方面能有效防止 SQL 注入另一方面允许基于组件值动态构造查询。使用方法在 SQL 语句中使用:parameter_name作为占位符在编辑器下方的ParametersSQL Parameters区域为每个参数添加键值对键名必须与语句中的参数名一致不带冒号值可以是静态值也可以是{{ }}记号的动态表达式例如引用输入组件的值。示例Query: SELECT * FROM users WHERE username :username SQL Parameters: Key: username Value: oliver // 也可以写成 {{ components.username.value }}底层执行时SQL 参数经过sanitizedQueryParams过滤掉空键后以具名参数对象形式传入knex.raw见 handleRawQuery占位符与参数对象在驱动层完成安全绑定值不会以字符串拼接方式进入语句这正是防注入的关键。查询超时Query TimeoutSQL 查询支持自定义超时时间。方法是在环境配置文件中加入变量PLUGINS_SQL_DB_STATEMENT_TIMEOUT单位毫秒默认值为 120,000 ms120 秒。对应源码位于插件构造函数 index.ts插件启动时读取环境变量若存在且为合法数字则采用之否则回退到默认的120000。该值同时被用作单条语句执行的.timeout()上限、连接options.requestTimeout的上限因此调小可让慢查询更快报错返回调大则可容纳长时间运行的复杂批处理。GUI 模式GUI 模式允许不编写 SQL即可操作数据库。根据 operations.jsonGUI 模式共支持 8 类操作覆盖了日常绝大部分读写场景Operation说明主要输入List rows查询行数据Schema、Table、Filter、Sort、Aggregate、Group by、Limit、OffsetCreate row新增一行Schema、Table、列名与值Update rows按过滤条件更新Schema、Table、Filter、Columns、安全开关Delete rows按过滤条件删除Schema、Table、Filter、Limit、安全开关Upsert row存在即更新、不存在即插入Schema、Table、主键列、ColumnsBulk insert批量插入多行Schema、Table、Records 数组Bulk update using primary key按主键批量更新Schema、Table、主键列、Records 数组Bulk upsert using primary key按主键批量 upsertSchema、Table、主键列、Records 数组其中官方文档以Bulk update using the primary key作为 GUI 模式的典型示例操作步骤为从下拉框选择GUI mode选择操作Bulk update using the primary key填写Table表名与Primary key主键列名在编辑器中以对象数组形式输入要更新的记录点击Run运行查询。示例{{ [ {id: 1, channel: 33}, {id: 2, channel: 24} ] }}上述表达式中每个对象以主键定位一行其余键为待更新的字段值。GUI 模式在选择表/列时会调用插件暴露的listSchemas、listTables、listColumns、getTables等元数据方法见 invokeMethod底层从INFORMATION_SCHEMA实时拉取 Schema、表与列清单因此下拉选项与实际库结构保持一致。从源码看GUI 各写操作还内置了多层工程化保障见 handleGuiQuery受影响行回传通过injectMssqlOutput自动为 INSERT / UPDATE / DELETE / MERGE 语句注入OUTPUT INSERTED.*/OUTPUT DELETED.*子句查询结果可直接拿到被写入或删除的记录事务保护单行更新、删除与批量操作均包裹在 Knex 事务中执行任一步失败自动整体回滚安全开关更新/删除类操作提供 Allow this query to update/delete multiple rows 与 Consider ... zero records as success 两个开关。默认情形下若一次匹配超过一行未授权批量修改或影响零行查询会报错而非静默通过删除操作还要求至少一个过滤条件或 limit防止整表被误删分批处理考虑到 SQL Server 单批最多 2100 个参数插件以 2000 为安全阈值根据列数动态计算批量大小computeBatchSize将超大批量记录切分为多个小批次顺序执行并汇总受影响行数见 index.ts。:::tip 结果转换 GUI/SQL 查询的返回结果可以继续使用 ToolJet 的**转换Transformations**功能进行加工具体参见 transformations 文档。 :::故障排查与网络注意点连接测试保存数据源时可点击Test connection插件会执行select version;验证连通性。源码对常见失败做了分类提示网络错误ESOCKET/ECONNREFUSED/ETIMEDOUT、认证失败ELOGIN、SSH 隧道失败、以及 Knex 超时提示检查 Host/Port/防火墙并在抛出QueryError时附带驱动的code/severity/state/number/lineNumber/serverName等结构化错误细节见 testConnection。VPC / 白名单自托管请确认数据库对 ToolJet 服务所在网络可达云端请放行 ToolJet 出口 IP。命名实例若 SQL Server 使用命名实例而非默认端口请同时填写Instance与对应端口二者会一并并入连接配置。与仓库实现的对应关系本文全部实操均可对应到以下仓库文件继续深挖数据源官方文档docs/docs/data-sources/mssql.md数据源总览见 contenteditable="false">【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表