我发现通过带有参数的 OLEDB 查询 Proficy Historian 的最佳方法是创建一个存储过程并让报告使用该存储过程作为其源,并传递您需要的参数。
这是一个使用您的时间戳参数示例过滤 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 数据集配置为通过存储的过程进行查询,并根据需要传递参数。这是配置的分步指南,如果您以前没有这样做过,它非常简单......