gpt4 book ai didi

c# - 从 C# 更新 SSRS 2012 部署的数据源和数据集引用

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:03 25 4
gpt4 key购买 nike

编辑:我想我可以稍微简化这个问题,只询问需要知道的内容:

我正在使用 SSRS 2010 Web 服务使用 C#:'ReportService2010.asmx' http://technet.microsoft.com/en-us/library/ee640743.aspx

我可以使用“CreateDataSource”方法在 SSRS 服务器 http://(servername)/ReportServer 的实例上创建数据源。

我还可以使用“CreateCatalogItem”方法在服务器上创建报告,通过引用项目的 RDL 本地文件将其序列化为字节数组,然后将其作为“定义”传递给在服务器上创建它的方法服务器。

现在我所做的一切都带有一个警告,一个重要的警告。我只能将所有内容部署到同一个文件夹。如果我部署一个数据源说“数据源”文件夹然后一个报告说:“测试报告”,报告不知道它有一个共享数据源在不同的位置引用。因此,我在 technet 文章中进行了一些研究,并尝试使用“GetItemDataSources”方法,但它只为 ReportingService2010.DataSource 返回类型提供了名称和类型。 有谁知道链接“数据源”的“报告”或“数据集”的 CatalogItem 属性的方法,以便在部署时指向 SSRS 服务器上不同文件夹中的引用?必须有据我所知,我可以从 Business Intelligence Development Studio 进行部署,它可以做到这一点。

最佳答案

我在部署报告文件时遇到过类似的问题;当通过 rs.exe 或代码进行部署时,您会遇到报告失去与数据源的链接的问题。

我们通过在我们的应用程序部署后立即将报告显式指向服务器端数据源来解决这个问题;这与您尝试做的类似吗?

无论如何,这是我们在报表部署应用程序中使用的稍微修改过的代码:

static void SetReportDataSource(string reportPath)
{
string dsPath = CombinePath(DataSourcePath, DataSourceFolder, DataSourceName);

DataSourceReference dsRef = new DataSourceReference()
{
Reference = dsPath
};
DataSource ds = new DataSource();
ds.Item = dsRef as DataSourceDefinitionOrReference;
ds.Name = DataSourceName;


var rptDataSources = Server.GetItemDataSources(reportPath);
foreach (var rptDs in rptDataSources)
{
Server.SetItemDataSources(filePath, new DataSource[] { ds });
}
}

所以,基本上我们有定义信息的变量,例如数据源名称、服务器上的数据源位置,以及报表的相同信息。它们可以位于不同的文件夹中。

在此基础上,我们创建了一个新的数据源引用,然后使用 SetItemDataSources 将报告重新指向该数据源。

无论如何,这为我解决了数据源问题。不确定共享数据集以及它们如何处理所有这些,但希望这会有所帮助。

此外,我只是认为这将使用 ReportService2005 端点,但对于 ReportService2010 可能并没有太大的不同。

编辑:

对于这里提到的路径,这些路径是相对于服务器的,例如/报告/。在定义包含目标的 ReportService2010 对象的 Url 属性时,您不需要完全限定名称。

关于c# - 从 C# 更新 SSRS 2012 部署的数据源和数据集引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com