问题标签 [tsql-parser]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQL Server 的 ow "batchparser.dll" - 如何使用它?
是否有记录或至少模糊记录的方式来利用batchparser.dll
隐藏在 SQL Server 目录结构 ( ) 深处的 SQL Server C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn
?
是否有可能提交 T-SQL 批处理并对其进行语法错误解析?
c# - 获取 TSql100Parser 节点的父节点
由于缺乏有关使用TSql100Parser
该类的文档,有什么方法可以确定特定节点的父节点?
我正在使用Microsoft.Data.Schema.ScriptDom.Sql
和Microsoft.Data.Schema.ScriptDom
程序集为我进行解析。
例子:
如果这不可能,我可以将父级作为附加参数传递给该__processExpression()
方法,但如果有官方方法,我想避免这种情况。
c# - 正则表达式从 .sql 文件 C# 中的 DDL 解析存储过程和对象名称
我有一个 .sql 文件,其中可能包含几个存储过程的 DDL 定义、表、触发器、视图等的更改语句
它可能有这样的陈述:
- 创建过程/创建过程
- 改变程序/改变程序
- 丢弃过程/丢弃过程
- 创建表/触发器/视图
- 更改表/触发器/视图
- 拖放表/触发器/视图
- ETC
解析 .sql 文件并获取对象列表(Proc/Table/View 名称)以及对它们执行的操作(ALTER/CREATE/DROP)的最佳方法是什么?我想代替使用 Microsoft.Data.Schema.ScriptDom 或 ANTLR 或其他解析器之类的东西,最简单的方法是使用 RegEx。但不确定我应该写什么样的正则表达式来涵盖所有场景。
到目前为止,这个表达式能够匹配上述所有规则。但是我如何获得它前面的对象的名称。例如。它匹配
(create|alter|drop)\s+(procedure|proc|table|trigger|view|function|constraint)
如何获得 AdvisorGroups 的名称是我的问题。我的 RegEx 也不完美,因为它可能有 [dbo]。在它面前与否。它也可能只是 Alter table AdvisorGroups。我并不是要照顾所有的可能性。只是最低限度。
ALTER TABLE [dbo].[AdvisorGroups] 添加约束 [XXX]
-提前致谢
c# - 用于检测 DDL(创建、更改、删除).sql 脚本中隐藏的 DML(插入、更新、删除)语句的正则表达式
更新:为了让这个问题更容易。我已经更改了字符串,现在您根本不必担心 BEGIN END。相反,我现在只有 GO 语句作为终止符。我希望我现在能从其他人那里得到一些答案
我需要编写一个正则表达式,它可以检测隐藏的 DML 语句,如 DDL 脚本(CREATE、ALTER、DROP)中的 INSERT、UPDATE、DELETE。
例子。在下面的脚本中,它应该捕获 2 个delete table5语句和最后一个insert into table3语句。但它应该忽略实际上在存储过程本身的主体中的插入语句。
如果你在这里运行这个 RegEx:http ://regexr.com?33rf3 ,你会看到我已经完成了 90%。唯一不起作用的部分是它正在进行贪婪匹配,直到最后一个 GO。我需要它在第一次 GO 时停止。我试过使用 +? 操作员使其不贪婪,但它不想工作。
c# - Microsoft.SqlServer.TransactSql.ScriptDom:TSqlTokenType
在解析 SQL 查询时,例如:
并通过 TSqlParserToken 迭代有一个名为 TokenType 的属性。我得到以下信息:
我知道为了让解析器返回这些值,它需要了解底层架构。我是否可以为解析器提供底层对象,以便它可以返回一组更敏感的标记?
TSqlTokenType 枚举还具有诸如“表”、“模式”、“视图”之类的值,所以我确信这一定是可能的。只是文档稀缺。担
sql-server-2012 - 选择返回的每个字段都需要精确的表/列
在数据库应用程序中,我将执行一些 SQL 查询。但我还需要查询或结果中的一些元数据。
我基本上需要的是确切地知道每个字段的来源(表和列)。Algebrized Tree 包含更多信息,所以我将其用作示例。
促使我这样做的是,我需要根据数据的来源采取一些行动,而不仅仅是像它的类型这样的信息。
起初我不需要担心存储过程或视图。这些将稍后出现,但我不确定我是否可以穿越障碍,因为在这两种情况下,它们已经被解析并且这些信息在执行计划中丢失了。也无需覆盖由表达式更改的任何列。
一个成熟的 SQL 解析器可以帮助我完成一半的工作,但也涵盖了一些不需要的领域(任何与选择无关的 SQL 语法。
我希望 SQL Server 相关框架能给我我需要的东西。也许像 SMO 或 TSql10Parser 之类的东西,但我尝试遵循这些路径没有成功,也许我在某个地方走错了路。
提前致谢, 雅克
java - Can we execute SQL without having a real database connection in java?
Can we execute SQL without having a real database connection in java? example:
I will replace :param in runtime in java code. Is there any way to do this?
I found this link: How do I extract selected columns given an Oracle SQL String?
but no quick solution is provided in this link
Currently thinking of: dummy hsqldb connection and execute SQL query. But it requires to span a new in memory db.
Is there any better & quick solution?
sql-server - 为什么 Microsoft.SqlServer.TransactSql.ScriptDom.TSqlParser 无法解析简单的有效表达式?
我们大量使用Microsoft.SqlServer.TransactSql.ScriptDom来处理一些 SQL 脚本。
我们的理解是解析器应该是完全保真的。
但是,我们最近发现了这个错误:
预期结果:isSuccess 为真
实际结果:isSuccess 为假
在 SQL Server 中运行以下查询有效: SELECT IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)
所以我们希望解析器也能够解析它。
这是一个已知的错误?