TransactSql.ScriptDom не обнаруживает синтаксическую ошибкуC#

Место общения программистов C#
Ответить
Anonymous
 TransactSql.ScriptDom не обнаруживает синтаксическую ошибку

Сообщение Anonymous »

У меня есть приложение C#, и я пытаюсь создать функцию для анализа TSQL. Основная цель: обнаружить наличие синтаксических ошибок.
Код:

Код: Выделить всё

using Microsoft.SqlServer.TransactSql.ScriptDom;
public void Parser(string tsql)
{

TSql160Parser parser = new TSql160Parser(true);// false);
IList
 errors1;
errors1 = new List { };

using (StringReader sr = new StringReader(tsql))
{
TSqlFragment fragment = parser.Parse(sr, out errors1);
if (errors1.Count > 0)
{
Console.WriteLine($"PARSE: Syntax error(s): {errors1.Count}");
}
IEnumerable batches = GetBatches(fragment);
foreach (var batch in batches)
{
Console.WriteLine(batch);
}
}
}
Когда я тестирую его с помощью скрипта

Код: Выделить всё

DECLARE @x INT = 0;
DECLARE @y INT = NULL;
DECLARE @xy INTUGER = 0;
DECLARE @xy INT = 0;

IF @x > @xy PRINT 1;
ELSE    PRINT 0;
он ​​не обнаруживает никаких ошибок.
SSMS Parse выдает ошибку

Сообщение 134, уровень 15, состояние 1, строка 4 Имя переменной '@xy' уже
объявлено. Имена переменных должны быть уникальными в пакете запроса или
хранимой процедуре.

Кроме того, этот сценарий не содержит ошибок в C#
DECLARE @ xy INT = 0;
DECLARE @xy MOO = 0;
Как проанализировать сценарий TSQL для обнаружения синтаксических ошибок?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ntax-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»