65.9K
CodeProject 正在变化。 阅读更多。
Home

用于在不使用 BI Development Studio 的情况下部署 SQL 2005 报告的简单 GUI 工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (11投票s)

2008 年 5 月 25 日

CPOL

3分钟阅读

viewsIcon

78472

downloadIcon

1114

用于在不使用 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 服务现在已准备好完成其余工作。

接下来,要开始,您必须定义以下内容

  1. 连接字符串作为数据源。
  2. 数据源名称。
  3. 报表源(您机器中的物理路径)。
  4. 报表名称(您将为刚浏览的报表命名的名称)。
  5. 最后,文件夹(报表服务器中的逻辑文件夹,而不是您机器中的物理文件夹),您将在其中保存报表和您想要的数据源。

最后,成功运行该工具后,然后打开报表管理器,您将找到一个新文件夹,就像您在工具中命名的那样,并具有您制作的 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 日:初始帖子
© . All rights reserved.