日期:2014-05-18  浏览次数:21040 次

ado.net有木有办法执行这种一条sql中涉及两个数据库的查询?
ado.net有木有办法执行这种一条sql中涉及两个数据库的查询?

select * from UserAuthority.dbo.User_P join
 ChangeDoc.dbo.Comment on
 UserAuthority.dbo.User_P.User_P_ID = ChangeDoc.dbo.Comment.User_P_ID

查了下 没有找到解决方案 

求教
求链接
求批评


------解决方案--------------------
你打开插叙你分析器的查询窗口的时候,打开的是哪一个数据库?你是用什么身份的登录的SQL Server数据库?你是否首先link了其它数据库?

这些都不与你的所谓“SqlCommand和SqlDataAdapter”程序中的数据库连接一致吧?!你在ado.net中又是一什么身份登录的sql server?登录的是哪一个数据库?是否在一次ado.net事务会话中首先使用executeNonQuery方法连接了其它数据库?
------解决方案--------------------
如果两个数据库在同一个数据库实例上,只要同时为两个数据库的用户或者是管理员,象你那种写法就可以了。

如果两个数据库不在同一实例上,需要把其中一个数据库作为另外一个数据库的linked server,打开management studio,在Server objects-->Linked Servers里设置。

设置完后,只要写一个数据库的连接字符串就能通过linked server访问到另一个数据库.

比如现在连到数据库a,访问linked server B的写法大致就和你的写法一致。

你现在能在management studio里执行sql,应该是即使需要linked server,也已经设置好。

你可以把代码放在存储过程里执行,ado.net那头就很简单了吧。

需要注意的是,如果用linked server,应该尽量避免直接join两个不同数据库的表,因为linked server的性能很差,应该先把linked server的数据全部select到本地的临时表里,然后再和本地的数据库里的表做join.


------解决方案--------------------
这不是asp.net问题,是数据库问题,数据库能,asp.net就能

查查跨数据库查询