Neatbo.

全局替换 @id 为什么会改变 SQL 日志

用完整 token 的诊断替换,对照字符串替换与命令、参数分别传送的模型。

保留命令与参数分别传送的模型

来源作者原以为 Prepare() 会暴露替换后的命令。获采纳的解释指出参数分别传送;另一答复分别记录命令和参数,作者表示这也实现了其目标。可读诊断有助于核对,但不是服务器执行记录。

只替换完整 token

全局替换 @id 还会改变 @id2 的前缀,以及注释和字面量中的同名文本。下面三个相同拼写承担不同角色;匹配报告只绑定代码区真实 token,其余源内容保持原样。

相同拼写,不同角色
SELECT @id, @id2, N'@id' -- @id
/* outer /* @id */ comment */

类型也是证据

JSON 布尔值 true 不能冒充整数 1。十进制值采用字符串,避免二进制浮点舍入;Unicode 字符串采用大写 N 与双写单引号。负数加括号,避免紧邻原有减号后形成 -- 注释。

报告保留全部有类型的值、字面量、每处引用来源位置、系统引用、未使用绑定、源文件名、SHA256、字节数及匹配方式。不会连接数据库、校验 SQL 语句、分析变量声明作用域、推断数据库排序规则或模拟驱动长度与精度强制转换,也不会执行命令。诊断不能替代参数化执行。

四份下载单独限制为 16 MiB;下载加完整复制文本合计限制为 32 MiB。即使 SQL 下载已含这段文本,完整复制文本仍额外计入。数据面板仅包含有界统计,完整匹配报告保留在 JSON 下载中。

同一个 10 秒绝对期限包含校验、读取、回调、Worker 加载和最终结果发布;同步阻塞不会延长期限,输入保留供重试。

检查完整交接
证据检查
Originals完整原字节与哈希
Bindings严格类型及每处重复使用
Preview诊断标识与完整文本
Limits拒绝为原子行为;恢复保留输入身份
  • 保存四份完整下载,同时保留原命令和参数 JSON。
  • 完整复制文本与下载字节分开计入;有界数据面板不代表完整匹配报告。
  • 超时后,使用相同原文件和绑定值重试。

参考资料

  • SQL 命令与参数分别记录

    完整原问、七个回答与两条作者反馈已读。作者接受解释与分别记录的方式;浏览器意图和市场规模未知。

  • Microsoft T-SQL 常量

    单引号双写、Unicode 的大写 N 前缀,以及 bit 和十进制值的规范。

  • ANTLR T-SQL 词法文法

    固定版本的原版生成 lexer,补验 COMMENT token 的嵌套不变量与未闭合 token 回退;词法诊断不校验 SQL 语句。

本分类工具使用说明

展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。

SQL 参数诊断展开将有类型的 T-SQL 参数展开为诊断文本,并核对每一处绑定。

保留原始 T-SQL 命令与有类型的参数 JSON,生成完整诊断预览及匹配报告。SQL 驱动实际分别传送命令和参数。

操作步骤

  1. 粘贴原命令或选择一份本地 UTF-8 .sql 文件。
  2. 粘贴完整有类型的参数 JSON,并明确选择名称匹配方式。
  3. 生成预览,检查重复引用、缺失名称错误与未使用绑定。
  4. 复制完整诊断或保存四份输出,与真实应用日志一起保留原件。

可调选项

参数名称匹配
精确拼写 · 忽略 ASCII 字母大小写

明确选择精确匹配或仅折叠 ASCII 字母大小写;数据库排序规则未知。

能力与限制

  • 粘贴命令或选择最多一份严格 UTF-8 文件,最多 256 KiB。文件仅替换命令输入框,第二输入框仍保留有类型的参数 JSON,最多 1 MiB。原始文件名标签最多 512 UTF-8 字节,不代表操作系统允许的文件名长度。
  • 根对象只含 parameters 数组;每项必须恰有 name、type、value。支持 Unicode 标量字符串、JSON 整数 token 表示的有符号 32 位 int、用规范十进制字符串表示且精度与小数位均不超过 38 的 decimal、严格 JSON boolean 和 null。未知类型或元数据会拒绝。
  • 最多 1,000 个唯一绑定;名称含 @ 最多 128 个 UTF-16 单位;每个字符串值最多 65,536 UTF-8 字节。名称须是完整成熟 LOCAL_ID token,不能以 @@ 开始。默认精确匹配,可选的大小写折叠仅作用于 ASCII A–Z。
  • 仅展开代码区完整参数 token。字符串、双引号或方括号标识符、行注释及合法嵌套块注释保持原样;@@ 系统引用保持原样并完整报告。未闭合 token、缺失绑定及解码后的重复元数据或名称会拒绝整次操作。
  • 最多 100,000 个成熟 lexer token、20,000 个参数与系统引用总和。完整诊断 SQL 最多 8 MiB、完整报告最多 4 MiB;不会输出采样或截断结果。病理输入可能先达到 10 秒的一次性 Worker 期限。
  • 每份输入最多移除一处开头 BOM 供解析,记录并在原件中保留;拒绝错误 UTF-8 与未配对代理码。页面预览前 4,000 个码点,复制与下载保留全部结果字节。
  • 报告保留全部有类型的值、字面量、每处引用来源位置、系统引用、未使用绑定、源文件名、SHA256、字节数及匹配方式。不会连接数据库、校验 SQL 语句、分析变量声明作用域、推断数据库排序规则或模拟驱动长度与精度强制转换,也不会执行命令。诊断不能替代参数化执行。
  • 四份下载单独限制为 16 MiB;下载加完整复制文本合计限制为 32 MiB。即使 SQL 下载已含这段文本,完整复制文本仍额外计入。数据面板仅包含有界统计,完整匹配报告保留在 JSON 下载中。
  • 同一个 10 秒绝对期限包含校验、读取、回调、Worker 加载和最终结果发布;同步阻塞不会延长期限,输入保留供重试。
打开SQL 参数诊断展开 →