最近项目用到了跨数据库的多表联查,项目用的是MVC4+EF,项目用到了很多数据库,每一个数据库都得建一个edmx文件,造成了项目的大量的edmx文件,这样给人一种项目很庞大很复杂,无疑间加剧了程序员编写代码的复杂度。
如果是不同的服务器上的多表联查的话,会更加复杂。
下面我讲一讲我自己的思路:
首页假如我们有3台服务器,分别是操作数据库的服务器A,第二台服务器B192.168.1.136,第三台服务器C192.168.1.125
注:关闭服务器上的防火墙(查询出错的话)
我们在A服务器上建立UserA数据库的User_TA表,B上建立UserB数据库的User_TB表,C上建立UserC数据库的User_TC表
User_TA表:
User_TB表:
User_TC表:
实例代码:
select*from ( select * fromopendatasource ( 'SQLOLEDB', 'DataSource=192.168.1.136;UserID=sa;Password=000' ).UserB.dbo.UserTBast1 )astt1 join ( select * fromopendatasource ( 'SQLOLEDB', 'DataSource=192.168.1.125;UserID=sa;Password=123' ).UserC.dbo.User_TCast1 )astt2ontt1.UserID=tt2.UserID |