OPENDATASOURCE 链接远程数据库
OpenRowSet 函数返回RowSet,可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。 依据 OLE DB 访问接口的功能,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。 尽管查询可能返回多个结果集,但 OPENROWSET 只返回第一个结果集。
语法
OPENROWSET (‘provider_name‘
,{‘datasource‘;‘user_id‘;‘password‘
|‘provider_string‘}
,{[catalog.][schema.]object
|‘query‘}
)
两个服务器上对应的SQL Server数据库服务,关联两张表查询数据。
跨库单表查询
select * from OPENDATASOURCE(‘SQLOLEDB’,‘Data Source=远程实列名;User ID=sa;Password=密码’).库名.dbo.表名
例如:
select * from OPENDATASOURCE(‘SQLOLEDB’,‘Data Source=192.168.1.131;User ID=sa;Password=123456’).BaoGuang_QrCode.dbo.T_BC_BaseInfo
跨库多表关联查询
SELECT * FROM OPENROWSET(‘SQLOLEDB’,‘192.168.1.128’;‘sa’;‘ele3561424’,EleList.dbo.barCode) A
JOIN OPENROWSET(‘SQLOLEDB’,‘192.168.1.131’;‘sa’;‘123456’,BaoGuang_QrCode.dbo.T_BC_BaseInfo) B
ON A.BarCode = B.BarCode
WHERE A.createDate>‘2019-12-31 00:00:00’
select * from OPENROWSET(‘SQLOLEDB’,‘192.168.10.28’;‘sa’;‘ele3561424’,EleList.dbo.barCode) D
where D.BarCode not in (
SELECT A.BarCode FROM OPENROWSET(‘SQLOLEDB’,‘192.168.10.28’;‘sa’;‘ele3561424’,EleList.dbo.barCode) A
JOIN OPENROWSET(‘SQLOLEDB’,‘192.168.10.168’;‘sa’;‘123qwe’,BaoGuang_QrCode.dbo.T_BC_BaseInfo) B
ON A.BarCode = B.BarCode
WHERE A.createDate>‘2019-12-31 00:00:00’)
and D.createDate>‘2019-12-31 00:00:00’
and D.BarCode like’%2001%’