用于在不使用 BI Development Studio 的情况下部署 SQL 2005 报告的简单 GUI 工具
用于在不使用 BI Development Studio 的情况下部署 SQL 2005 报告的简单 GUI 工具。
引言
SQL 2005 报表的部署可以通过两种方式完成:在 BI 开发工作室中选择部署选项,然后指定目标服务器 URL 和目标报表文件夹(这是标准方式),或者通过打开报表服务器 URL 并创建 DataSource
,在其中添加 datasource
和报表的父文件夹,然后手动附加报表(这仍然不太现实,因为您不必每次要部署报表时都这样做)。但是,第一种选择并非总是可行,因为您可能希望在您的机器上未安装 BI 开发工作室的情况下部署报表。在本文中,我希望您在阅读之前了解这两种技术,因为我不会详细解释所有内容。
我制作了一个简单的 GUI 工具,通过使用 SQL Reporting Server 产生的名为 reportservice.asmx 的 Web 服务(由报表服务器的 IIS 托管)来帮助部署 SQL 报表。通常,报表服务器的 URL 为:http://<服务器名称>/ReportServer,有时也为 http://<服务器名称>/ReportServer$SQLExpress,或 http://<服务器名称>/ReportServer$SQL2005。这取决于您命名的 SQL Server 实例。无论如何,让我们回到重点。 位于服务器机器 IIS 中托管的 ReportsServer Web 应用程序中的 Web 服务实际上完成了您部署所需报表的所有操作;我认为最好看一下 ReportingService2005 方法。
无论如何……让我们开始看看应用程序和代码。首先,我将研究应用程序,以及一切的含义,然后我们将快速回顾代码的主要部分。
如何使用该工具?

运行应用程序后,将出现一个窗口,要求您输入报表管理器 URL,以便连接到其 Web 服务,即,它与您在使用 BI 开发工作室进行部署时在目标服务器 URL 属性中键入的 URL 相同。然后保存您输入的 URL,这样您就不必每次运行应用程序时都键入它了。我使用此 URL,以便修改我正在使用的 Web 服务,以连接到您选择的 URL。要了解我的意思,只需查看 这篇文章,作者是 Christopher G. Lasater,他实际上描述了我所做的事情(动态 Web 服务)。

完成上一步后,Web 服务现在已准备好完成其余工作。
接下来,要开始,您必须定义以下内容
- 连接字符串作为数据源。
- 数据源名称。
- 报表源(您机器中的物理路径)。
- 报表名称(您将为刚浏览的报表命名的名称)。
- 最后,文件夹(报表服务器中的逻辑文件夹,而不是您机器中的物理文件夹),您将在其中保存报表和您想要的数据源。
最后,成功运行该工具后,然后打开报表管理器,您将找到一个新文件夹,就像您在工具中命名的那样,并具有您制作的 DataSources 和 Reports,如下所示。

代码概述
如果您查看了 ReportingService2005 方法,您将找到您主要使用的两个主要函数。它们是 CreateDataSource 函数和 CreateReport 函数。
这是创建 DataSource
的部分
public void CreateReportDataSource
(string name, string extension, string connectionString)
{
listView1.Items.Add("Creating Data Source [" + txt_DataSource.Text + "]");
ReportService.DataSourceDefinition definition =
new ReportServerInstaller.ReportService.DataSourceDefinition();
definition.CredentialRetrieval =
ReportService.CredentialRetrievalEnum.Integrated;
definition.ConnectString = connectionString;
definition.Enabled = true;
definition.Extension = extension;
try
{
rs.CreateDataSource(name, FolderName,
chk_DataSourceOverwrite.Checked, definition, null);
listView1.Items.Add("Data source: [" + name + "] created successfully.");
TS_Progress.PerformStep();
}
catch (Exception ex)
{
listView1.Items.Add("ERROR creating data source: " + name);
throw ex;
}
}
这是发布报表的部分
private void PublishReport(string reportName)
{
listView1.Items.Add("Publishing Report [" + reportName + "]");
FileStream stream = File.OpenRead(ReportSource);
definition = new byte[stream.Length];
stream.Read(definition, 0, int.Parse(stream.Length.ToString()));
stream.Close();
try
{
rs.CreateReport(txt_ReportName.Text, FolderName,
chk_ReportOverwrite.Checked, definition, null);
listView1.Items.Add("Report:
[" + reportName + "] created successfully.");
TS_Progress.PerformStep();
}
catch (Exception ex)
{
listView1.Items.Add("ERROR creating Report: " + reportName);
throw ex;
}
}
我附加了一个安装程序,以便于使用该工具。您无需在使用前配置任何内容。只需确保您在第一个表单中键入了正确的 SQL 管理器 URL,因为这可以完成所有操作。部署愉快!;)
历史
- 2008 年 5 月 25 日:初始帖子