当前位置: 代码迷 >> PB >> pb连接多个数据库解决办法
  详细解决方案

pb连接多个数据库解决办法

热度:71   发布时间:2016-04-29 05:58:39.0
pb连接多个数据库
我分别定义了SQLCA1,SQLCA2用来连接不同的数据库,做报表时,每次只能连一个数据库,对一个数据库进行操作,我想在报表中数据窗口里能取出这两个数据库的数据进行查询。
------解决方案--------------------
1.写个存储过程,在数据库里做分布式查询,然后用datawindow接收结果集。

2.两个接收结果集的datawindow ,一个显示报表的datawindow
先用两个datawindow分别接收出两个数据库里你要的结果集。然后跟据报表逻辑,一条一条的处理再插入到显示报表的datawindow里
------解决方案--------------------
MSSQL不同服务器之间的数据操作

-创建链接服务器?
exec?sp_addlinkedserver???'ITSV?',?'?',?'SQLOLEDB?',?'远程服务器名或ip地址?'?
exec?sp_addlinkedsrvlogin?'ITSV?',?'false?',null,?'用户名?',?'密码?'

--查询示例?
select?*?from?ITSV.数据库名.dbo.表名

--导入示例?
select?*?into?表?from?ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器?
exec?sp_dropserver?'ITSV?',?'droplogins?'

--连接远程/局域网数据(openrowset/openquery/opendatasource)?
--1、openrowset

--查询示例?
select?*?from?openrowset(?'SQLOLEDB?',?'sql服务器名?';?'用户名?';?'密码?',数据库名.dbo.表名)

--生成本地表?
select?*?into?表?from?openrowset(?'SQLOLEDB?',?'sql服务器名?';?'用户名?';?'密码?',数据库名.dbo.表名)

--把本地表导入远程表?
insert?openrowset(?'SQLOLEDB?',?'sql服务器名?';?'用户名?';?'密码?',数据库名.dbo.表名)?
select?*from?本地表

--更新本地表?
update?b?
set?b.列A=a.列A?
from?openrowset(?'SQLOLEDB?',?'sql服务器名?';?'用户名?';?'密码?',数据库名.dbo.表名)as?a?inner?join?本地表?b?
on?a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器?
exec?sp_addlinkedserver???'ITSV?',?'?',?'SQLOLEDB?',?'远程服务器名或ip地址?'?
--查询?
select?*?
FROM?openquery(ITSV,?'SELECT?*?FROM?数据库.dbo.表名?')?
--把本地表导入远程表?
insert?openquery(ITSV,?'SELECT?*?FROM?数据库.dbo.表名?')?
select?*?from?本地表?
--更新本地表?
update?b?
set?b.列B=a.列B?
FROM?openquery(ITSV,?'SELECT?*?FROM?数据库.dbo.表名?')?as?a?
inner?join?本地表?b?on?a.列A=b.列A

--3、opendatasource/openrowset?
SELECT???*?
FROM???opendatasource(?'SQLOLEDB?',?'Data?Source=ip/ServerName;User?ID=登陆名;Password=密码?'?).test.dbo.roy_ta?
--把本地表导入远程表
  相关解决方案