新建日期: 2006 年 7 月 17 日
当为数据集定义查询时,您需要选择数据源类型。数据源类型指定用于连接到数据源的数据处理扩展插件或已注册的 .NET 数据访问接口。数据访问接口属于软件层,用于与数据源进行交互并确定为在查询中使用变量提供了哪些支持。本主题说明对于给定的结果集,查询如何根据连接到的数据源和查询中是否包含变量而发生变化。
查询变量和数据访问接口
下表显示 AdventureWorks 示例数据库中的数据结果。通过对 AdventureWorks 示例数据库运行 Transact-SQL 查询,或者对部署为 AdventureWorks 示例报表一部分的 Adventure Works 多维数据集运行 MDX 查询,可以创建此结果集。此结果集显示两列:包含“Mountain”字样的产品型号名称以及相应的 Internet 销售次数。
名称 | InternetSales |
---|---|
Fender Set - Mountain |
2121 |
HL Mountain Tire |
1396 |
LL Mountain Tire |
862 |
ML Mountain Tire |
1161 |
Mountain Bottle Cage |
2025 |
Mountain Tire Tube |
3095 |
Mountain-100 |
396 |
Mountain-200 |
3552 |
Mountain-400-W |
543 |
Mountain-500 |
479 |
Women's Mountain Shorts |
1019 |
下面几节介绍用来创建此结果集的查询,首先从关系数据库创建,然后从多维数据库创建。
关系数据库数据源
对于关系数据库(如 Microsoft SQL Server),您可以使用 Transact-SQL 创建查询。此查询通过包含设置为硬编码值的 WHERE 子句来限制结果,查询并不包含变量。
Transact-SQL 查询 |
---|
|
若要为产品型号名称 PM.Name
添加变量,您需要在 WHERE 子句中指定一个查询参数。下表说明如何为不同的数据访问接口指定查询参数。当您选择数据源类型时,会自动为您选择数据访问接口。该数据访问接口的连接字符串显示在第二列。此表中的查询与上面的查询相同,只是以数据访问接口支持的格式添加了一个参数。
数据源类型 | 数据访问接口 | 查询 |
---|---|---|
Microsoft SQL Server |
Microsoft SQL Server (SqlClient) 连接字符串:
|
|
OLE DB |
Microsoft OLE DB Provider for SQL Server 连接字符串:
|
|
Oracle |
Microsoft SQL Server (OracleClient) |
|
OLE DB |
任何注册的 .NET 数据访问接口 |
特定于访问接口。 |
在这些示例中,查询的 WHERE 子句中加入了变量,将对单词“Mountain”的测试更改为对变量值的测试。
- SQL Server 的 .NET 数据访问接口支持以 at (@) 字符开头的命名变量。例如,
PM.Name ``LIKE '%' + @Mountain + '%')
。 - OLE DB Provider for SQL Server 不支持命名变量。可使用问号 (?) 字符指定变量。传递给 OLE DB 访问接口的参数必须按它们在 WHERE 子句中出现的顺序传递。例如,
PM.Name ``LIKE ('%' + ? + '%')
。 - .NET Data Provider for Oracle 支持以冒号 (:) 字符开头的编号参数。例如,
PM.Name ``LIKE '%' + :1 + '%')
。 - 其他 OLE DB 数据访问接口对变量的支持特定于数据访问接口。请参阅数据访问接口文档以获得详细信息。
与数据源类型关联的查询设计器为每个标识的变量创建一个查询参数。数据集属性页的“参数”选项卡上列出了这些查询参数。对于每个查询参数,将创建 String 类型的报表参数。为数据集定义的查询参数值将设置为相应的报表参数。您可以在“报表属性”对话框(可从“数据”视图下的“报表”菜单中访问)中编辑报表参数数据类型和其他属性。您也可以手动创建、编辑或删除这些查询参数。有关详细信息,请参阅数据集(“参数”选项卡,报表设计器)。
多维数据库数据源
对于多维数据库(如 Microsoft Analysis Services),您可以使用 MDX 创建查询。虽然此查询通过包含设置为硬编码值的 Filter 子句来限制结果,但是此查询并不包含变量。
MDX 查询 |
---|
|
若要为产品型号名称 @ProductModelName 添加变量,您需要添加 FILTER 子句。下表显示:对于多维数据库,变量为 FILTER 子句的一部分。数据源类型是在您为 Reporting Services 创建新数据源时从下拉列表中选择的值。当您选择数据源类型时,会自动为您选择数据访问接口。此数据访问接口的连接字符串也显示在第二列。此表中的查询与上面的查询相同,只是以数据访问接口支持的格式添加了一个参数。
数据源类型 | 数据访问接口 | 查询 |
---|---|---|
Microsoft SQL Server Analysis Services |
SQL Server Analysis Services (AdomdClient) 连接字符串:
|
|
OLE DB |
Microsoft OLE DB Provider for Analysis Services 9.0 连接字符串:
|
OLE DB for OLAP 不支持参数化查询。 《Analysis Services 与 Reporting Services 的集成》白皮书中介绍了解决方法。 |
在这些示例中,查询的 WHERE 子句中添加了变量,将对单词“Mountain”的测试更改为对变量值的测试。
- Microsoft SQL Server Analysis Services 支持在 MDX 查询设计器的 Filter 部分中定义的命名参数。命名变量以 at (@) 字符开头。例如,
@ProductModelName
。 - Microsoft OLE DB Provider for Analysis Services 9.0 不支持参数化查询。有关详细信息,请在 msdn.microsoft.com 上搜索“Integrating Analysis Services with Reporting Services”(Analysis Services 与 Reporting Services 的集成)。
- 其他多维数据访问接口对变量的支持特定于数据访问接口。请参阅数据访问接口文档以获得详细信息。
与数据源类型关联的查询设计器为每个标识的变量创建一个查询参数。将自动创建特定数据集以为每个参数提供有效值。数据集属性页的“参数”选项卡上列出了这些查询参数。对于每个查询参数,将创建 String 类型的报表参数。为数据集定义的查询参数值将设置为相应的报表参数。您也可以手动创建、编辑或删除这些数据集参数。有关详细信息,请参阅如何在 Analysis Services 的 MDX 和 DMX 查询设计器中定义参数(报表设计器)。
无论何时,只要处理查询,就会创建为该查询提供有效值的数据集。
请参阅
任务
概念
为 Analysis Services 数据库使用扩展字段属性
在设计模式下使用 Analysis Services MDX 查询设计器
在查询模式下使用 Analysis Services MDX 查询设计器
为 SQL Server 关系数据库定义报表数据集
为 Oracle 数据库中的关系数据定义报表数据集
其他资源
Analysis Services MDX 查询设计器用户界面
SQL Server 查询设计器用户界面