Лучший способ, который я нашел для запроса Proficy Historian через OLEDB с параметрами, - это создать хранимую процедуру и сделать так, чтобы отчет использовал хранимую процедуру в качестве источника, передавая необходимые параметры.
Ниже приведен пример использования параметра timestamp для фильтрации данных Historian. Вы также можете довольно легко расширить хранимый процесс, передав параметры SamplingMode, DateFrom, DateTo и т. Д.
Шаг 1 Используйте справочную документацию для установки OLEDBдрайвера на ваш экземпляр SQL Server и создайте связанный сервер, указывающий на ваш Historian.
Шаг 2 Убедитесь, что драйвер OLEDB и связанный сервер существуют. Они должны выглядеть примерно так:
Шаг 3 Создайте хранимую процедуру в БД, которая использует новый связанный сервер:
CREATE PROCEDURE [Historian_GetDataByTimestamp]
@HistorianLinkedServer NVARCHAR(100),
@Timestamp DATETIME
AS
BEGIN
DECLARE @SQL NVARCHAR(4000);
DECLARE @Result TABLE
(TagName NVARCHAR(100) NOT NULL,
[Timestamp] DATETIME NOT NULL,
[Value] NVARCHAR(100) NOT NULL,
Quality NVARCHAR(100) NOT NULL);
SET @SQL = 'SELECT tagname, timestamp, value, quality
FROM OPENQUERY ("' + @HistorianLinkedServer + '",
''SET SamplingMode = RawByTime
SELECT tagname, timestamp, value, quality
FROM ihRawData
WHERE Timestamp = "' + CONVERT(nvarchar, @Timestamp, 20) + '"'')';
INSERT INTO @Result EXEC sp_executesql @SQL
SELECT Tagname, [Timestamp], [Value], Quality
FROM @Result
ORDER BY TagName DESC, [Timestamp]
END;
Шаг 4 Проверьте сохраненный процесс из SSMS или аналогичного:
Шаг 5 Сконфигурируйте ваш набор данных SSRS для запроса через сохраненный процесс, передавая параметры по мере необходимости. Вот пошаговое руководство для настройки того, что если вы еще этого не сделали, это очень просто ...