现在想查询的sql文中包含两个表 但是两个表分别在不同的数据库中 而且两个数据库在不同的PC上
例如:
主DB(192.168.1.2).USER(表)       辅助DB(192.168.1.3).payselect user.username,pay.pays from 主DB.user INNER JOIN 辅助DB.pay ON 主DB.id=辅助DB.id
怎么实现最好?
大概查了一下用sp_addlinkedserver貌似可以实现 但是这东西怎么用? 放存储过程里?还是连接主数据库时用?

解决方案 »

  1.   

    $dsn = "Driver={SQL Server};Server=主DBIP;Database=主DB;";
    $db->Connect($dsn,db_user,db_password);
    return $db;
    ——————————————————————————
    $que = "select user.username,pay.pays from 主DB.user INNER JOIN 辅助DB.pay ON 主DB.id=辅助DB.id";
    $rs = $db->Execute($que);——————————————————————————
    以上是正常的连接 可以查询主DB数据 但是辅助DB应该怎么连上呢?求助
      

  2.   

    嘻嘻 我自己实现了
    $dsn = "Driver={SQL Server};Server=主DBIP;Database=主DB;";
    $db->Connect($dsn,db_user,db_password);
    // ADD
    $que = "Exec sp_droplinkedsrvlogin DBVIP,Null
    Exec sp_dropserver DBVIP
    EXEC sp_addlinkedserver
          @server='DBVIP',--被访问的服务器别名 
           @srvproduct='',
          @provider='SQLOLEDB',
          @datasrc='Server2'   --要访问的服务器EXEC sp_addlinkedsrvlogin 
         'DBVIP', --被访问的服务器别名
          'false', 
         NULL, 
         'sa', --帐号
          'thankyoubobby' --密码";
    $rs= $db->Execute($que);
    //
    return $db;
    ——————————————————————————
    $que = "select user.username,pay.pays from user INNER JOIN DBVIP.fuzhuDB.dbo.pay ON user.id=pay.id";
    $rs = $db->Execute($que);测试可以使用 , 这个发法如何?合理么 效率如何 ?有没更好方案 请指教