我分别定义了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?
--把本地表导入远程表