加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer跨服务器查询解决方案

发布时间:2020-12-12 14:14:23 所属栏目:MsSql教程 来源:网络整理
导读:OPENROWSET 包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。
OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个
?
语法
OPENROWSET ( 'provider_name'
???,{ 'datasource' ; 'user_id' ; 'password'
??????? | 'provider_string' }
??????? | 'query' }?
??? )?
参数
'provider_name'
字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。provider_name 没有默认值。
'datasource'
字符串常量,它对应着某个特定的 OLE DB 数据源。datasource 是将被传递到提供程序 IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。?
'user_id'
字符串常量,它是传递到指定 OLE DB 提供程序的用户名。user_id 为连接指定安全上下文,并将它作为 DBPROP_AUTH_USERID 属性传递进来以初始化提供程序。
'password'
字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将 password 作为 DBPROP_AUTH_PASSWORD 属性传递进来。
'provider_string'
提供程序特定的连接字符串,将它作为 DBPROP_INIT_PROVIDERSTRING 属性传递进来以初始化 OLE DB 提供程序。通常 provider_string 封装初始化提供程序所需的所有连接信息。
catalog
目录或数据库的名称,其中驻留着指定的对象。
schema
架构的名称或指定对象的对象所有者名称。
object
对象名称,它唯一地标识出将要操作的对象。
'query'
是字符串常量,发送到提供程序并由提供程序执行。Microsoft? SQL Server? 不处理该查询,但处理由提供程序返回的查询结果(直接传递查询)。对于有些提供程序,它们并没有通过表名而是通过命令语言表现自己的表格格式数据,那么将直接传递查询用于这些提供程序是非常有用的。只要查询提供程序支持 OLE DB Command 对象及其强制接口,那么在远程服务器上就支持直接传递查询。有关更多信息,请参见 SQL Server OLE DB 程序员参考。
示例:
USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
?? 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname,au_fname') AS a

GO


1.开通分布式查询权限

 
 
  1. exec?sp_configure?'show?advanced?options',1? ?
  2. reconfigure ?
  3. exec?sp_configure?'Ad?Hoc?Distributed?Queries',1? ?
  4. reconfigure?

2.查询

 
 
  1. select?a.ProjCode?as?'楼盘编号',b.projname?as?'楼盘名称',count(1)?as?'房源量'?from? ?
  2. ?openrowset(?'SQLOLEDB?',?'IP地址(服务器名)';?'用户名';?'密码',[数据库名].[dbo].[表名])?a ?
  3. ?,?openrowset(?'SQLOLEDB?',[数据库名].[dbo].[表名])?b ?
  4. ?where?a.ProjCode=b.newcode?GROUP?by???a.ProjCode?,b.projname?order?by??count(1)?desc?

3.然后换城市,只需要改IP、 库名和表名了。

4.关闭

 
 
  1. exec?sp_configure?'Ad?Hoc?Distributed?Queries',0? ?
  2. reconfigure? ?
  3. exec?sp_configure?'show?advanced?options',0? ?
  4. reconfigure

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读