TSql130Parser似乎无法识别提示

时间:2019-01-25 09:22:00

标签: .net sql-server-2016 scriptdom

我创建了以下控制台应用程序,并引用了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 :(得分:1)

您需要使用Microsoft.SqlServer.TransactSql.ScriptDom.dll的14.0或更高版本,以便TSql130Parser识别较新的提示。撰写本文时,最新的14.0版本是14.0.3811.1,可以作为NuGet package使用。还有一个15.0 NuGet package版本可用,它支持SQL Server 2019(当前在CTP中)和具有最新功能的较旧TSqlParsers。