TSql130Parser, похоже, не распознает подсказки - PullRequest
0 голосов
/ 25 января 2019

Я создал следующее консольное приложение со ссылкой на 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 Ответ

0 голосов
/ 25 января 2019

Вам нужно будет использовать версию 14.0 или выше Microsoft.SqlServer.TransactSql.ScriptDom.dll, чтобы TSql130Parser распознал более новую подсказку. Последняя версия 14.0 на момент написания статьи 14.0.3811.1 доступна в виде пакета NuGet . Также доступна версия пакета 15.0 NuGet, которая поддерживает SQL Server 2019 (в настоящее время находится в CTP) и более старые TSqlParsers с последними функциями.

...