【问题标题】:TSql130Parser seems not to recognize hintsTSql130Parser 似乎无法识别提示
【发布时间】:2019-01-25 09:22:00
【问题描述】:

我创建了以下控制台应用程序并引用了 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 似乎无法正常工作。 不知道有没有办法解决这个问题?

【问题讨论】:

    标签: .net sql-server-2016 scriptdom


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 2014-10-29
      • 2011-01-12
      • 2020-06-30
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多