SQL Server (T-SQL) SQL Parser for Java and .NET
General SQL Parser (GSP) parses SQL Server (T-SQL) with a dedicated, hand-tuned grammar — full AST access, offline syntax validation, formatting, rewriting, and column-level data lineage, including complete procedural SQL support. One commercial SDK, available for Java and .NET.
SQL Server (T-SQL) SQL that GSP parses
CREATE PROCEDURE dbo.usp_sync_target @id INT AS
BEGIN TRY
MERGE dbo.target AS t USING dbo.source AS s ON t.id = s.id
WHEN MATCHED THEN UPDATE SET t.val = s.val;
END TRY
BEGIN CATCH THROW; END CATCH; Parse it in Java
import gudusoft.gsqlparser.*;
TGSqlParser parser = new TGSqlParser(EDbVendor.dbvmssql);
parser.sqltext = sql; // the SQL Server (T-SQL) SQL above
if (parser.parse() == 0) {
System.out.println(parser.sqlstatements.size() + " statement(s) parsed");
} else {
System.out.println(parser.getErrormessage());
} Parse it in C#
using gudusoft.gsqlparser;
TGSqlParser parser = new TGSqlParser(EDbVendor.dbvmssql);
parser.sqltext = sql; // the SQL Server (T-SQL) SQL above
if (parser.parse() == 0)
{
Console.WriteLine(parser.sqlstatements.size() + " statement(s) parsed");
}
else
{
Console.WriteLine(parser.Errormessage);
} Same grammar, .NET-idiomatic API — properties instead of Java getters. See the C# quick start or the .NET SQL Parser SDK.
What GSP handles in SQL Server (T-SQL)
- TRY/CATCH blocks
- Dynamic SQL (EXEC) lineage
- MERGE statements
- BULK INSERT and COPY INTO
- Partition functions and schemes
- Procedural SQL: T-SQL stored procedures, functions, triggers, BEGIN...END blocks, TRY/CATCH exception handling, and dynamic SQL (EXEC) with lineage folding
Beyond parsing, the same AST powers table/column extraction, validation, formatting, and column-level lineage for SQL Server (T-SQL).
Recent SQL Server (T-SQL) parser updates
- 2026-06-30 [SQL Server] Don't fail unit on partial-fold dynamic-SQL re-parse
- 2026-06-28 [SQL Server] Resolve dynamic-SQL lineage with parameter bindings
- 2026-06-24 [SQL Server] Fold literal EXEC('<sql>') so it yields lineage
Full history in the release notes.
SQL Server (T-SQL) resources
- SQL Server (T-SQL) syntax reference — dialect documentation
- SQL Server (T-SQL) keyword compatibility — every keyword, and whether it can be an identifier
- SQL Server (T-SQL) capability data (JSON) — measured construct-by-construct parse coverage, machine-readable
- Java quick start — Maven/Gradle setup and first parse
- C# quick start — .NET setup and first parse
Common questions
Does GSP parse SQL Server (T-SQL) stored procedures and procedural SQL?
Yes. GSP parses T-SQL stored procedures, functions, triggers, BEGIN...END blocks, TRY/CATCH exception handling, and dynamic SQL (EXEC) with lineage folding into a full AST — procedure bodies become real statement trees you can traverse, not opaque text blocks. This is what makes lineage and impact analysis work inside procedural code.
Do I need a live SQL Server (T-SQL) database connection to validate SQL?
No. GSP validates SQL Server (T-SQL) syntax completely offline. You get error line and column positions, the offending token, and a hint — with no server, driver, or credentials involved.
How complete is the SQL Server (T-SQL) grammar?
GSP uses a dedicated hand-tuned grammar for SQL Server (T-SQL) — not a generic SQL grammar with flags. The parser recognizes 586 SQL Server (T-SQL) keywords and knows which 541 of them can also be used as identifiers, which is exactly the kind of edge case that breaks generic parsers.
Can I use the SQL Server (T-SQL) parser from C# / .NET?
Yes. The .NET edition parses SQL Server (T-SQL) with the same grammar, and the API is idiomatic .NET rather than a Java transliteration: where Java has parser.getErrormessage() and stmt.getResultColumnList(), C# has parser.Errormessage and stmt.ResultColumnList. The package id is gudusoft.gsqlparser, multi-targeting net10.0 and netstandard2.0, so .NET Framework 4.6.2+ hosts are covered too.
Can GSP extract column-level lineage from SQL Server (T-SQL) SQL?
Yes. The built-in DataFlowAnalyzer produces column-level lineage, impact analysis, and call graphs from SQL Server (T-SQL) scripts — it is the engine behind Gudu SQLFlow and the lineage integrations for DataHub and OpenMetadata.