为 SQL Server 关系数据库定义报表数据集

更新日期: 2006 年 4 月 14 日

Reporting Services 提供了一个数据处理扩展插件,该插件支持从 Microsoft SQL Server 关系数据库中检索报表数据。此数据处理扩展插件可从关系数据表、视图、存储过程以及在基础数据源中定义的其他数据结构中检索数据。连接至数据源后,可以创建一个报表数据集,从而定义要在报表中使用的来自该数据源的数据。Reporting Services 数据集包括一个数据源、一个用于在处理报表时检索数据的查询,以及一个字段集合。数据集定义保存在报表定义中。“数据集”窗口显示报表中的当前数据集定义。

定义数据集的方式有两种:使用 Transact-SQL 查询文本或存储过程调用来创建查询,或者选择表并检索该表中的所有数据。系统会依据查询自动创建数据集的字段集合。用户可以编辑字段或添加计算字段。当查询运行时,计算字段会对基于表达式的值进行计算。还可以创建筛选器,以便在将数据发送到报表之前限制数据源中的数据。有关定义数据集的说明,请参阅报表数据操作指南主题

有两个针对关系数据源的查询设计器:通用查询设计器和图形查询设计器。默认情况下将打开通用查询设计器。使用通用查询设计器可以直接输入 Transact-SQL 文本、粘贴来自其他源的查询文本、输入使用图形查询设计器无法生成的复杂查询,或输入基于查询的表达式。使用图形查询设计器可以浏览数据源中的元数据以采用交互方式设计查询,还可以查看数据源中的存储过程或表的列表。

若要在报表设计器中打开查询设计器,请选择**“数据”选项卡。若要从一个查询设计器切换到另一个查询设计器,请单击“数据”视图工具栏上的“通用查询设计器”**(“通用查询设计器”按钮图标) 切换按钮。有关详细信息和示例,请参阅 SQL Server 查询设计器用户界面

定义查询后,您还可以指定诸如 TimeoutCaseSensitivity 等属性,并定义哪些报表参数将值传递给查询参数。运行查询时,您将看到数据源中的结果集。结果集中的列将映射到数据集中的字段。处理报表时,与数据集字段绑定的报表项将显示检索或计算的数据。报表仅处理任何查询检索的第一个结果集。

用于关系数据的查询设计器具有以下三种命令类型:

  • Text 类型接受 Transact-SQL 语句。
  • StoredProcedure 类型接受对数据源中的存储过程的调用。此模式不支持输出参数。
  • TableDirect 类型接受数据源中的表名称并返回该表的所有列。并不是所有的数据访问接口都支持 TableDirect。

使用查询文本

可以使用 Transact-SQL 来定义数据集中的数据。为此,请将数据集的命令类型设置为 Text,并通过在 SQL 窗格中直接键入来输入 Transact-SQL 文本。

例如,以下 Transact-SQL 查询将选择所有雇员的姓名。

SELECT FirstName, LastName
FROM   HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID

单击工具栏上的**“运行”**按钮以运行查询,并在“结果”窗格中显示结果。

由于此命令模式接受 Transact-SQL 语句,因此也可以从此模式运行存储过程。例如,以下 SQL 语句将调用 AdventureWorks 存储过程 uspGetEmployeeManagers。

EXEC uspGetEmployeeManagers '1'

使用存储过程

可以使用存储过程来定义数据集中的数据。为此,可以从“查询”窗格中执行存储过程,也可以将数据集的命令类型设置为 StoredProcedure 并从下拉列表中选择该类型。如果您位于图形查询设计器中,请单击“命令类型”下拉列表,并查看数据源中的可用存储过程。如果您位于通用查询设计器中并且已知道要运行的存储过程的名称,请在“查询”窗格中输入其名称。

Reporting Services 支持只返回一组数据的存储过程。如果存储过程返回多个结果集,则仅使用第一个结果集。

如果某个存储过程带有具有默认值的参数,您可以在 Reporting Services 中访问该值,只需使用 DEFAULT 关键字作为该参数的值即可。如果该查询参数与某个报表参数关联,用户可以在报表参数的输入框中键入或选择单词 DEFAULT。有关详细信息,请参阅存储过程(数据库引擎)

使用 TableDirect

您可以方便地返回单个表的所有列,以定义数据集中的数据。为此,请将命令类型设置为 TableDirect 并从下拉列表中选择一个表。如果该表具有数据源中的架构,请验证该架构是否包括在表名称中。如果不包括,则可以键入架构。

例如,请在“查询”窗格的 TableDirect 命令类型中输入以下命令。此命令将从 AdventureWorks 数据库的 Person.Contact 表中检索所有数据。

Person.Contact

单击工具栏上的**“运行”**按钮以运行该命令,并在“结果”窗格中显示结果。

ms159260.note(zh-cn,SQL.90).gif注意:
Microsoft SQL Server 数据源类型不支持 TableDirect。若要使用此模式,请选择 OLE DB 数据源类型,然后选择 Microsoft OLE DB Provider for SQL Server。

使用查询参数

如果您的查询中包含参数,则当键入查询时,报表设计器将在报表定义中自动创建相应的报表参数。当报表运行时,报表参数的值将传递给查询参数。例如,下面的 SQL 查询将创建一个名为 EmpID 的报表参数:

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID 
WHERE EmployeeID = @EmpID

在**“数据集”对话框的“参数”**选项卡上,您可以管理报表参数与查询参数之间的关系。其参数与报表参数关联的查询不需要 DECLARE 语句。

虽然报表参数是根据查询参数自动创建的,但您需要在报表布局视图中单独管理报表参数。

ms159260.note(zh-cn,SQL.90).gif注意:
如果更改了查询参数的名称或删除了查询参数,并不会自动更改或删除与之相对应的报表参数。您可以使用“报表参数”对话框来删除报表参数。有关详细信息,请参阅在 Reporting Services 中使用参数

创建数据集

  1. 从**“数据”选项卡的“数据集”下拉列表中,选择“<新建数据集>”**。

  2. 从**“数据集”对话框的“数据源”下拉列表中,选择“新建数据源”**。

  3. 从**“数据源”对话框的“类型”**下拉列表中,选择 Microsoft SQL Server。

  4. 指定使用 SQL Server 数据源的连接字符串。
    与数据库管理员联系以获取连接信息。下面的连接字符串示例指定本地客户端上的 AdventureWorks 示例数据库。

    Data Source=localhost;Initial Catalog=AdventureWorks
    
  5. 在**“数据源”对话框的“凭据”**选项卡中设置数据库凭据。

  6. 单击“确定”。

有关详细信息,请参阅连接数据源

请参阅

任务

如何创建数据集(报表设计器)

概念

定义报表数据集
Reporting Services 中的查询设计工具
连接数据源

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

新增内容:
  • TableDirect。
  • 创建数据集子主题。
更改的内容: