跨库查询

查询用例

大多数的数据库支持下面的写法,我们可以通过As指定是哪个库

var list = db.Queryable<Order, OrderItem, Custom>((o, i, c) => o.Id == i.OrderId&&c.Id == o.CustomId)
                .AS("xx.dbo.order")
                .AS<OrderItem>("yy.dbo.OrderItem")
                .AS<Custom>("zz.dbo.Custom")
                .Select<ViewOrder>()
                .ToList();


跨服务器配置

像SqlServer在同一个服务器上面的多个库可以  用库名.dbo.表名去访问,如果是不同机器上的数据库

则需求下面的配置

下面是SqlServer的例子

可以企业管理器里添加linkserver实现。

使用sp_addlinkedserver创建一个链接的服务器,使其允许对分布式的、针对 OLEDB 数据源的异类查询进行访问。

在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。

步骤:

1. 创建linkserver

 EXEC sp_addlinkedserver

 @server='DB1',--被访问的服务器别名

 @srvproduct='', --sqlserver不需要指定

 @provider='SQLOLEDB',

5@datasrc='192.168.1.102' --要访问的服务器

2. 登录链接服务器

EXEC sp_addlinkedsrvlogin 

 'DB1', --被访问的服务器别名

 'false', --useself

 NULL, --locallogin

'sa', --帐号 

'123456' --密码

3. 前两步执行成功后,可以执行:

 select * from db1.ecology2013_SHQC2.dbo.hrmresource

如果这个语句执行成功,那么就可以  .As("db1.ecology2013_SHQC2.dbo.hrmresource") 这样使用了