加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在服务器端以编程方式更改报告的SSRS数据源

发布时间:2020-12-15 04:34:27 所属栏目:百科 来源:网络整理
导读:今天,对于每个客户,我们部署相同的SSRS报告文件夹和数据源文件夹. 这些文件夹之间的区别是每个文件夹的名称和数据源的连接字符串. 我们使用的是Report Server 2008 R2. 在报告呈现之前,是否可以仅维护一个报表和数据源文件夹,并以编程方式更改服务器端的连接
今天,对于每个客户,我们部署相同的SSRS报告文件夹和数据源文件夹.
这些文件夹之间的区别是每个文件夹的名称和数据源的连接字符串.

我们使用的是Report Server 2008 R2.

在报告呈现之前,是否可以仅维护一个报表和数据源文件夹,并以编程方式更改服务器端的连接字符串?

如果不是,是否可以通过更改报表中的某些逻辑来实现?
今天我们使用“共享数据源”选项.

解决方法

这是我们在我们环境中所做的工作 – 我们维护一组报告,可以在任何客户端使用自己的配置进行部署.

你在这里有几个选择.由于您使用的是共享数据源,因此不需要为每个报表定义数据源,这样就更容易了.

1.使用rs.exe实用程序和脚本文件

rs.exe at Books Online

该程序允许您创建可与Report Server Web服务交互的脚本文件(在VB.NET中).您创建一个脚本文件(例如Deploy.rss),并使用各种参数调用rs.exe程序,包括您定义的任何自定义参数:

rs.exe -i DeployReports.rss -s http://server/ReportServer -v DatabaseInstance="SQL" -v DatabaseName="ReportDB" -v ReportFolder="ClientReports"

因此,这将调用脚本DeployReports.rss,连接到http:// server / ReportServer,具有三个用户定义的参数,可用于创建数据源和报告文件夹.

在scipt文件中可以有这样的东西:

Public Sub Main()

    rs.Credentials = System.Net.CredentialCache.DefaultCredentials

    CreateFolder(reportFolder,"Report folder")
    CreateFolder(datasourceFolder,"Data source folder")
    CreateDataSource()

End Sub

哪些可以使Web服务调用如下:

rs.CreateFolder(folderName,"/",Nothing)

'Define the data source definition.
Dim definition As New DataSourceDefinition()
definition.CredentialRetrieval = CredentialRetrievalEnum.Integrated
definition.ConnectString = "data source=" + DatabaseInstance + ";initial catalog=" + DatabaseName
definition.Enabled = True
definition.EnabledSpecified = True
definition.Extension = "SQL"
definition.ImpersonateUser = False
definition.ImpersonateUserSpecified = True
'Use the default prompt string.
definition.Prompt = Nothing
definition.WindowsCredentials = False

Try

    rs.CreateDataSource(datasource,datasourcePath,False,definition,Nothing)
    Console.WriteLine("Data source {0} created successfully",datasource)

Catch e As Exception

    Console.WriteLine(e.Message)

End Try

您没有指定使用哪种版本的Reporting Services,所以我假定2008年.请注意,有多个端点可以使用,具体取决于SQL Server版本. 2005/2008年终点在2008R2及以上已被淘汰,但仍然可用.写脚本时要注意一点.

2.通过应用程序调用SSRS Web服务

Report Server Web Service overview

与上述脚本相同的调用也可以在任何其他应用程序中进行.因此,您只需要通过WSDL添加对Report Server Web服务的引用,您可以连接到远程服务并调用其方法来部署报告,数据源等.

所以最终你连接到报表服务器Web服务,它只是你需要考虑的媒介.

使用脚本更容易运行,因为它只是从命令行运行程序,但编写自己的部署应用程序肯定会提供更大的灵活性.我建议让脚本继续进行,所以你了解这个过程,然后将它迁移到一个定制的应用程序,如果需要的话.祝你好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读