使用ActiveReports报表设计器绑定联合查询报表
联合查询报表
ActiveReportsServer报表系统支持市场上现有的任何数据库管理系统,诸如Oracle,
SQLServer等。
有些报表的数据来源可能来自多个数据库服务器,甚至来自不同的数据库管理系统。为
这样的报表准备数据时,需要设计多数据源的数据集。
多数据源的数据集设计分两种情况:多Oracle数据源和Oracle与SQLServer异构数
据源。
(1)多Oracle数据源
如果需要将来自多个Oracle服务器上的数据集成在一张报表上,可采用Oracle的数
据库链接(DatabaseLink)技术,具体使用方法如下:
(a)以具备CREATEDBLINK权限的身份登录到Oracle数据库,这个数据库应该是
报表取数的数据源库。
(b)创建数据库链接。假设从另一台Oracle服务器db2server抓取数据,创建数据
库链接的语句应形如:
createdatabaselinkORCL02
connecttodb2useridentifiedbydb2userpassword
using''(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=db2server)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=db2servicename)
)
)'';
其中:
db2user:提供数据的Oracle服务器上的用户名,不要带引号。例如:system。
db2userpassword:登录提供数据的Oracle服务器的密码,不要带引号。
db2server:提供数据的Oracle服务器的计算机名或IP地址,不要带引号。
db2servicename:提供数据的Oracle服务器的服务名,默认为ORCL。
(c)在查询语句中,以@数据库链接的形式,使用数据库链接抓取数据,例如:
selectfromHR.JOBS@ORCL02;
其中的ORCL02就是上面创建的数据库链接名。
(2)Oracle与SQLServer异构数据源
如果要将来自Oracle和SQLServer服务器的数据集成到一张报表上,可以有两种技
术路线:一是基于Oracle的透明网关(TransparentGateways),从Oracle抓取SQL
Server的数据;另一个是基于SQLServer的链接服务器(LinkedServer),从SQLServer
抓取Oracle的数据。
(2-1)从Oracle抓取SQLServer数据
Oracle的透明网关(TransparentGateway)可以实现Oracle数据库对非Oracle数
据库的透明访问。“透明”可以理解为用户感受不到被查询的数据库并非当前Oracle数据
库。
使用Oracle透明网关抓取SQLServer的大致步骤如下:
(a)安装配置透明网关
Oracle的透明网关(TransparentGateway)是Oracle数据库管理系统中的一个单独
授权的模块。透明网关可以装在独立的一台的机器上,也可以安装在OracleServer端或非
OracleServer端。
(b)创建数据库链接
在Oracle中抓取SQLServer数据,首先需要通过透明网关建立一个对SQLServer
的数据库连接(DatabaseLink),语句如下:
Createdatabaselink【数据库链接名】connectto【用户名】identifiedby【密
码】using‘服务名’;
其中,用户名和密码是SQLServer的用户登录名和密码,服务名则是OracleServer
端的TNS_NAMES文件里已经配置好的服务名。
(c)在查询语句中,以@数据库链接的形式,使用数据库链接抓取数据,例如:
selectfrom表名@链接名;
(2-2)从SQLServer抓取Oracle数据
采用SQLServer的链接服务器,可以实现从SQL语句中抓取任意ODBC或OLEDB
数据源。抓取Oracle数据的方法如下:
(a)在SQLServer服务器上安装Oracle客户端。这是保证SQLServer能够抓取
Oracle数据的基础。
(b)使用OracleNetConfigurationAssistant,创建本地NET服务名,指向Oracle
数据库。
(c)在SQLServerManagementStudio中,创建链接服务器:服务器对象–链接
服务器–新建链接服务器,如下图:
(d)输入Oracle服务器相关信息,如下图:
链接服务器:任意名称,如:ORCL01
访问接口:选择OracleProviderforOLEDB
产品名称:任意输入,如:Oracle
数据源:这个最关键,就是Oracle本地NET服务名,如:ORCL
(e)成功保存链接服务器信息后,在SQLServer的查询语句中,以链接服务器名..
的形式,使用链接服务器。例如:
selectfromORCL01..HR.JOBS
比较异构数据源的两种抓取外部数据的方式,由于Oracle的透明网关属于单独授权的模块,
配置过程也非常复杂,而SQLServer链接服务器基于标准的ODBC和OLEDB接口规范,
配置简单且无额外成本,因此建议采用后者,即采用SQLServer的链接服务器,抓取Oracle
数据。
|
|