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.

73%
of 290 documented SQL Server (T-SQL) constructs parse fully — measured on GSP 4.1.10 (2026-08-08)
586
SQL Server (T-SQL) keywords recognized by the grammar
541
keywords the parser also accepts as identifiers
718
SQL Server (T-SQL) test SQL files in the regression corpus
Weekly
release cadence — dialect fixes ship in days

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)

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

Full history in the release notes.

SQL Server (T-SQL) resources

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.