架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 7|回复: 0

[资料] .NET/C# 使用 SqlScriptDOM 解析执行的 SQL 语句

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
需求:需要判断执行的 SQL 语句有没有语法错误,保证可以在 SQL Server 数据库能够正常执行,然后获取执行语句的表名。

SqlScriptDOM

SqlScriptDOM(SQL Script Document Object Model)是.NET框架中的一部分,主要用于解析和操作T-SQL脚本。它提供了一套API,允许开发者以编程方式读取、修改或生成SQL Server的T-SQL代码。这在需要自动化处理数据库脚本的情况下非常有用,比如在数据库迁移工具、数据库版本控制或是任何需要动态构建SQL语句的应用场景中。

使用SqlScriptDOM,你可以:

解析SQL脚本:将T-SQL代码转换为一种树形结构,便于理解和处理。
遍历AST(抽象语法树):通过遍历这个树形结构来访问和修改SQL脚本的不同部分。
生成SQL脚本:基于修改后的抽象语法树重新生成T-SQL代码。
执行静态分析:检查SQL脚本中的潜在错误或不规范的地方而不实际运行这些脚本。
支持多种SQL元素:包括但不限于表定义、视图、存储过程等。

源码:超链接登录可见。
文档:超链接登录可见。

版本映射参考

SqlVersionFlags 快速参考:

标识SQL Server 版本共同特征
TSql80及以上版本20002000基本 T-SQL
TSql90及以上版本20052005XML、CTE
TSql100及以上版本20082008合并,文件流
TSql110及以上版本20122012序列、窗口函数
TSql120及以上版本20142014内存OLTP,最大持续时间
TSql130及以上版本20162016JSON,时态表
TSql140及以上版本20172017图,STRING_AGG
TSql150及以上版本20192019UTF-8,智能 QP
TSql160及以上版本20222022可恢复约束、JSON 改进
TSql170及以上版本20252025向量搜索,人工智能特征


NUGET 引用如下:
解析表名

解析 select 语句中的表名,代码如下:
如下图:

QQ截图20260513141237.jpg

验证SQL查询安全性,仅允许执行SELECT类(未测试),代码如下:
(完)




上一篇:使用 Docker 启动一个 Mozilla Firefox 浏览器
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-5-13 16:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表