SQL Server 连接类型 (SSRS)

若要在报表中包括来自 SQL Server 数据库的数据,您必须具有一个基于 Microsoft SQL Server 类型的报表数据源的数据集。此内置数据源类型基于 Microsoft SQL Server 数据扩展插件。使用此数据源类型可连接到 SQL Server 数据库的当前版本和早期版本并从中检索数据。

此数据扩展插件支持多值参数、服务器聚合以及与连接字符串分开管理的凭据。

使用本主题中的信息可以生成数据源。有关分步说明,请参阅如何添加和验证数据连接或数据源(Report Builder 3.0 和 SSRS)

本文内容

连接字符串

凭据

查询

参数

备注

操作指南主题

相关章节

连接字符串

当连接到 SQL Server 数据库时,您将会连接到服务器上一个 SQL Server 实例中的数据库对象。该数据库可能具有包含多个表、视图和存储过程的不同架构。可在查询设计器中指定要使用的数据库对象。如果未在连接字符串中指定数据库,则将连接到数据库管理员为您分配的默认数据库。

请联系数据库管理员,获取连接信息以及用于连接到数据源的凭据。下面的连接字符串示例指定本地客户端上的示例数据库:

Data Source=<server>;Initial Catalog=AdventureWorks

有关连接字符串示例的详细信息,请参阅Report Builder 3.0 中的数据连接、数据源和连接字符串

凭据

执行以下操作时需要提供凭据:运行查询、本地预览报表以及从报表服务器预览报表。

报表发布后,您可能需要更改数据源的凭据,以使报表在报表服务器上运行时,用于检索数据的权限有效。

在报表创作客户端,可以使用下列选项指定凭据:

  • 当前 Windows 用户(也称为集成安全性)。

  • 使用存储的用户名和密码。

  • 提示用户输入凭据。此选项仅支持 Windows 集成安全性。

  • 不需要提供任何凭据。若要使用此选项,您必须具有为报表服务器配置的无人参与的执行帐户。有关详细信息,请参阅 msdn.microsoft.com 上 Reporting Services 文档中的“配置无人参与的执行帐户”。

有关详细信息,请参阅数据连接、数据源和连接字符串 (SSRS)在 Report Builder 3.0 中指定凭据

用于“返回首页”链接的箭头图标返回页首

查询

查询指定了要为报表数据集检索哪些数据。查询的结果集中的列填充数据集的字段集合。报表仅处理查询检索的第一个结果集。

默认情况下,如果您创建一个新查询,或者打开一个可在图形查询设计器中显示的现有查询,则可以使用关系查询设计器。可以通过下列方式指定查询:

  • 以交互方式生成查询。使用关系查询设计器,此设计器显示表、视图、存储过程及其他数据库项按数据库架构组织的层次结构视图。选择表或视图中的列,或者指定存储过程或表值函数。通过指定筛选条件限制要检索的数据行数。通过设置参数选项自定义报表运行时的筛选器。

  • 键入或粘贴查询。使用基于文本的查询设计器直接输入 Transact-SQL 文本、粘贴来自其他来源的查询文本、输入使用关系查询设计器无法生成的复杂查询,或输入基于查询的表达式。

  • 从文件或报表中导入现有的查询。使用任一查询设计器中的**“导入查询”**按钮浏览到 .sql 文件或 .rdl 文件,然后导入查询。

有关详细信息,请参阅关系查询设计器用户界面 (Report Builder 3.0)基于文本的查询设计器用户界面 (Report Builder 3.0)

支持以下查询模式:

  • 文本   键入 Transact-SQL 命令。

  • 存储过程   从存储过程的列表中进行选择。

使用 Text 查询类型

在基于文本的查询设计器中,可以键入 Transact-SQL 命令来定义数据集中的数据。例如,下面的 Transact-SQL 查询选择职位为销售助理的所有雇员的姓名:

SELECT
  HumanResources.Employee.BusinessEntityID
  ,HumanResources.Employee.JobTitle
  ,Person.Person.FirstName
  ,Person.Person.LastName
FROM
  Person.Person
  INNER JOIN HumanResources.Employee
    ON Person.Person.BusinessEntityID = HumanResources.Employee.BusinessEntityID
WHERE HumanResources.Employee.JobTitle = 'Marketing Assistant' 

单击工具栏上的**“运行”按钮 (!**) 可以运行查询并显示结果集。

若要参数化此查询,请添加一个查询参数。例如,将 WHERE 子句更改为下面的内容:

WHERE HumanResources.Employee.JobTitle = (@JobTitle)

运行查询时,会自动创建与查询参数对应的报表参数。有关详细信息,请参阅本主题后面的查询参数。

用于“返回首页”链接的箭头图标返回页首

使用 StoredProcedure 查询类型

您可以采用以下方式之一为数据集查询指定存储过程:

  • 在**“数据集属性”对话框中,设置“存储过程”**选项。从存储过程和表值函数的下拉列表中进行选择。

  • 在关系查询设计器中的“数据库视图”窗格中,选择存储过程或表值函数。

  • 在基于文本的查询设计器中,从工具栏中选择 StoredProcedure

选择存储过程或表值函数之后,就可以运行查询。系统将提示您提供输入参数的值。运行查询时,会自动创建与输入参数对应的报表参数。有关详细信息,请参阅本主题后面的查询参数。

仅支持为存储过程检索到的第一个结果集。如果存储过程返回多个结果集,则仅使用第一个结果集。

如果某个存储过程带有具有默认值的参数,则您可以访问该值,方法是使用 DEFAULT 关键字作为该参数的值。如果该查询参数链接到某个报表参数,用户可以在报表参数的输入框中键入或选择单词 DEFAULT。

有关详细信息,请参阅 msdn.microsoft.com 上 SQL Server 联机丛书中的“存储过程(数据库引擎)”。

用于“返回首页”链接的箭头图标返回页首

参数

如果查询文本包含查询变量或具有输入参数的存储过程,则将自动生成数据集的对应查询参数和报表的报表参数。查询文本不得包含针对每个查询变量的 DECLARE 语句。

例如,下面的 SQL 查询将创建一个名为 EmpID 的报表参数:

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

报表参数是用可能需要修改的默认属性值创建的。例如:

  • 默认情况下,每个报表参数的数据类型均为 Text。如果基础数据属于其他数据类型,则必须更改参数的数据类型。

  • 如果选择多值参数选项,您必须手动更改查询,使用 IN 运算符(如 WHERE EmployeeID IN (@EmpID))测试这些值是否属于集的一部分。

有关详细信息,请参阅参数(Report Builder 3.0 和 SSRS)

用于“返回首页”链接的箭头图标返回页首

备注

您还可以通过使用 OLE DB 或 ODBC 数据源类型从 SQL Server 数据库中检索数据。有关详细信息,请参阅OLE DB 连接类型 (SSRS)ODBC 连接类型 (SSRS)

平台和版本信息

有关平台和版本支持的详细信息,请参阅 SQL Server联机丛书中的 Reporting Services 文档的Reporting Services 支持的数据源 (SSRS)部分。

用于“返回首页”链接的箭头图标返回页首

相关章节

文档中的这些章节提供有关报表数据的深入概念性信息,以及有关如何定义、自定义和使用与数据相关的报表部件的步骤信息。

用于“返回首页”链接的箭头图标返回页首