Я пишу простую функцию запроса, чтобы сделать мой скрипт эффективным и простым, так как я начинаю писать больше запросов в будущем.
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";
Я получаю эту ошибку:
Исключение вызывает "Fill" с аргументом "1": "Query (1, 41) Синтаксис для «.»неверно. (ВЫБЕРИТЕ [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
И я действительно попробовал его успешно, не создав функцию запроса, и он отобразил результаты.каким-то образом с созданием функции запроса это не работает ...