如有2个数据库DB1,DB2,那我要查询db1中table1中的id与db2中table3中的id相同的记录
两种情况:
一,2个数库据都在本地二,2个数据库在2台机器上,另外一台的ip:192.168.0.3 数据库权限:用户名user,密码pwd请问能不能用sql语句实现,如果能请帮写个例子。谢谢

解决方案 »

  1.   


    select * from db2.dbo.table3 m, db1.dbo.table1 n where m.id = n.id二(需要建立链接)然后如下:
    select * from machinename2.db2.dbo.table3 m, machinename1.db1.dbo.table1 n where m.id = n.id不同服务器数据库之间的数据操作--创建链接服务器 
    exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' 
    exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , '用户名' , '密码' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver 'ITSV' , 'droplogins' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
    from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) as a inner join 本地表 b 
    on a.column1 = b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' 
    --查询 
    select * 
    FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') 
    --把本地表导入远程表 
    insert openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') as a 
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT * 
    FROM opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').数据库.dbo.表名 
    select * from 本地表 
      

  2.   


    up
    select *
    from openrowset('SQLOLEDB','192.168.0.3';'user'; 'pwd',DB_NAME.dbo.TB_NAME) 
      

  3.   

    对于访问位于2个不同实例中的数据库,不管2个实例是本地还是分居在2台机器上,最简便的方法,就是在其中一个实例中建立另外一个实例的链接数据库,如在DB1中建立到DB2的链接数据库LinkToDB2,那么在DB
    1中访问DB2中的dbo.table就是这样的:SELECT * FROM LinkToDB2.dbo.talbe