视图的跨库定义!或实现数据的跨库读取方案(只要读)!

dmm 2003-04-05 12:14:40
数据库与数据库的关连使用:
数据库A,数据库B,B是A的历史数据存放库
B中存放的是A的历史数据,每月按条件从A中导过来,并清掉A中符合清除条件的数据。
但查询时要求能直接连到A中就能将需要的数据(分布在A,B两库中)查出来
我想利用这样的方式:
create View v_tbr
select db_a.tb_r.* from db_a.tb_r where something
union
select db_b.tb_r.* from db_b.tb_r where something
将这个视图存放在A数据库中,
查询时就从v_tba中查询
不知是不是可以?
另,db_a,db_b可能在同一个服务器上,也可能不在同一台服务器上,
我知道数据库是可以进行跨库查询,但不知道不同机器上可不可以,
另,
在视图中这样做可不可以,,具体的怎么写,,我只知道大概可以这么写查询的,,

要不就放到存储过程中也可以,,利用存储过程返回一个临时结果表集再处理,但具体怎么写呢?..
...全文
84 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
leafyhy 2003-04-07
用联接服务器,控制读取的用户为只读的权限即可.
回复
stwx 2003-04-06
随便问一下大力,如历使数据放在同一个库中(分不同表存放),会影响这个库的性能吗?
回复
blactte 2003-04-05
同意大力

UP
回复
pengdali 2003-04-05
或直接:
select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名
回复
pengdali 2003-04-05
使用联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
回复
dmm 2003-04-05
如果数据库B不在线时,(比如库坏掉了)
进行了这样的查询会有什么后果?
回复
xjbs 2003-04-05
用还是有用的
如果能将其交给后台数据库处理,
这样在前台中就无须做任何处理了,
写程序简单得多,
再有就是当数据库分布到很多机器上时,
方便性是呈几何级的,,,

能不能实现又是一回事,,
:)
回复
pengdali 2003-04-05
连接超时
选中Microsoft SQL Servers-->工具栏,工具-->高级-->连接超时-->改为3000

但连接超时也不是做这个用的。你在前台做呀,设置一个时间,并做异常处理,干嘛钻这个牛角尖,你的自己数据库服务器,被停机了,你怎么处理?
回复
xjbs 2003-04-05
如果不在线,
会造成长时间等待,,
非常麻烦,,
也许可以进行一些设置,但我不知道怎么设,,
请高手解答。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2003-04-05 12:14
社区公告
暂无公告