TSql130Parser, похоже, не распознает подсказки
Я создал следующее консольное приложение со ссылкой на Microsoft.SqlServer.TransactSql.ScriptDom.dll:
Imports Microsoft.SqlServer.TransactSql.ScriptDom
Imports System.IO
Module Module1
Sub Main()
Dim sql = "SELECT * FROM Product OPTION(USE HINT('ENABLE_PARALLEL_PLAN_PREFERENCE'))"
Dim parser As New TSql130Parser(False)
Dim errors As Collections.Generic.IList(Of ParseError)
Dim script As TSqlScript = parser.Parse(New StringReader(sql), errors)
Console.WriteLine(errors(0).Message)
Console.ReadKey()
End Sub
End Module
Запуск этого консольного приложения приводит к следующему выводу:
Incorrect syntax near HINT.
Но этот фрагмент SQL правильно анализируется в Microsoft SQL Server Management Studio.
Поэтому кажется, что TSql130Parser не работает правильно. Знаете ли вы, есть ли решение для этого?
1 ответ
Вам нужно будет использовать версию 14.0 или выше Microsoft.SqlServer.TransactSql.ScriptDom.dll
для того, чтобы TSql130Parser
распознать новый намек. Последняя версия 14.0 на момент написания статьи 14.0.3811.1 доступна в виде пакета NuGet. Также доступна версия пакета NuGet 15.0, которая поддерживает SQL Server 2019 (в настоящее время находится в CTP) и старые TSqlParsers с последними функциями.