【问题标题】:DMV Query syntax incorrect exceptionDMV 查询语法错误异常
【发布时间】:2019-01-28 21:03:54
【问题描述】:

我正在编写一个简单的查询函数,以使我的脚本高效且简单,因为我将来会开始编写更多查询。

Function Query($Query) {
    $connectionString = "Provider=msolap;Data Source=$Server;Initial Catalog=$Database;"

    $connection = New-Object System.Data.OleDb.OleDbConnection $connectionString

    $command = New-Object System.Data.OleDb.OleDbCommand
    $command.Connection = $connection 
    $command.CommandText = $Query 

    $connection.Open()

    $adapter = New-Object System.Data.OleDb.OleDbDataAdapter #$command
    $adapter.SelectCommand = $command 

    $dataset = New-Object System.Data.DataSet
    [void] $adapter.Fill($dataSet)

    $connection.Close()

    $dataSet.Tables[0]
}

查询

SELECT [SESSION_ID], [SESSION_SPID] 
FROM $SYSTEM.DISCOVER_SESSIONS";

我收到此错误:

使用“1”参数调用“Fill”的异常:“Query (1, 41) The syntax for '.'不正确。(SELECT [SESSION_ID],[SESSION_SPID] FROM .DISCOVER_SESSIONS)。"
+ [void] $adapter.Fill($dataSet)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : OleDbException

我错过了什么吗?我遵循了每个 MSDocs 的语法:

https://docs.microsoft.com/en-us/sql/analysis-services/instances/use-dynamic-management-views-dmvs-to-monitor-analysis-services?view=sql-server-2017

我实际上在没有创建查询函数的情况下成功地尝试了它并显示了结果。不知何故,将其作为查询功能不起作用...

【问题讨论】:

    标签: sql powershell ssas dmv


    【解决方案1】:

    使用单引号字符串:

    Query 'SELECT [SESSION_ID],[SESSION_SPID] FROM $SYSTEM.DISCOVER_SESSIONS';
    

    在 Powershell 中,双引号字符串会进行字符串插值,即字符串中的 $SYSTEM 被替换为变量 SYSTEM 的值,或者(在这种情况下)未定义 SYSTEM 时为空白字符串.

    【讨论】:

    • woooow,这实际上是问题所在!谢谢! “”不被接受有什么原因吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2010-11-03
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多