一、SqlServer跨数据库查询SqlServer

SELECT * FROM OPENDATASOURCE('SQLOLEDB', 
'server=服务器ID(比如:192.168.1.1);uid=用户名;pwd=密码;database=数据库名').数据库名.dbo.表名
WHERE 条件

二、SqlServer跨数据库查询Oracle

1、配置Oracle的TNS

2、

IF NOT EXISTS(SELECT * FROM sys.servers WHERE server_id <>0 AND name = 'abc')--abc是自定义别名
 --1.添加链接服务器
 EXEC sp_addlinkedserver
  @server='abc',
  @srvproduct='Oracle',
  @provider='MSDAORA',--32位SQLSERVER连接64位ORACLE时用MSDAORA
  --@provider='OraOLEDB.Oracle',--64位SQLSERVER连接64位ORACLE时用OraOLEDB.Oracle  

  @datasrc='ERPDB'  --TNS的别名
 --2.为链接服务器设置默认连接密码
 EXEC sp_addlinkedsrvlogin
  @rmtsrvname='abc',
  @useself='false',
  --@locallogin='sa', --可注释
  @rmtuser='sa', --Oracle数据库用户名
  @rmtpassword='sa' --Oracle数据库密码
GO

--通过OPENQUERY方式查询数据
SELECT * FROM OPENQUERY(abc,'SELECT * FROM 表名')

--删除服务器连接
IF  EXISTS (SELECT * FROM sys.servers WHERE server_id <> 0 AND name = 'abc')
 EXEC sp_dropserver @server='abc', @droplogins='droplogins'
GO

posted on 2013-05-14 15:46  清风暮雨  阅读(1234)  评论(0)    收藏  举报