SqlServer跨库查询
由于业务的拆分,数据库拆分为两种作用:
- 汇总数据库(Master,头节点数据库),
- 子节点数据库(Compute Node,计算子节点数据库)
这样,就设计到子节点访问头节点数据库中的某张汇总表,这种表的记录一般在几,到几十万行左右,目前适合做跨库查询。
跨库查询目前分为两种:
- 通过sp_addlinkedserver建立链接服务器
- 没有链接服务器时,可以使用openrowset或者opendatasource函数
- 在部署时,需要在SQLSERVER外围应用配置器中启用OpenRowSet和OpenDataSource支持
- 较第一种(通过sp_addlinkedserver建立链接服务器)简单,适合简单的sql语句中,如果是复杂的逻辑,需要有语句块、函数或者存储过程才能完成时,建议使用第一种(即时创建、销毁连接服务器)
- 通过sp_addlinkedserver建立链接服务器
- 使用步骤
- 通过Sp_AddLinkedServer创建链接服务器
- 示例: Exec Sp_AddLinkedServer 'RemoteLinkMasterDB','','SqlOleDB','172.21.1.1\MyDBInstace'
- 通过Sp_AddLinkedSrvLogin 创建链接服务器使用账户、密码
- 示例: Exec Sp_AddLinkedSrvLogin 'RemoteLinkMasterDB','false',null,'MyMasterDataBaseUser','MyMasterDBBaseUserPassword'
- 验证连接服务器是否存在
- 代码示例:if exists(select 1 from master..sysservers where srvname='RemoteLinkMasterDB'
- 通过Sp_ServerOption 设置 RPC、RPC Out为True(如果不需要执行跨域存储过程则不需要设置此项)
- Exec Sp_ServerOption 'RemoteLinkMasterDB','RPC','true';
- Exec sp_ServerOption 'RemoteLinkMasterDB','RPC Out','true';
- 使用之后,通过Sp_DropServer删除链接服务器、删除链接登陆
- Exec Sp_DropServer 'RemoteLinkMasterDB','DropLogins';
- SQL中使用示例:
- 查询:Select * From RemoteLinkMasterDB.数据库名称(Database Name).Scheme(数据库架构).表/视图名;
- 执行跨域存储过程:Exec RemoteLinkMasterDB.数据库名称(Database Name).Scheme(数据库架构).存储过程名(参数相关);
- 还可以使用openquery函数:Select * From OpenQuery(RemoteLinkMasterDB,'Select * From 数据库名称.架构名.表名');
- 通过Sp_AddLinkedServer创建链接服务器
- 使用步骤
- 没有链接服务器时,可以使用openrowset或者opendatasource函数
- OpenRowSet用法示例:
- Select * From OpenRowSet('SqlOleDB','172.21.1.1\MyDBInstace','MyMasterDataBaseUser','MyMasterDBBaseUserPassword','Select GetDate()');
- Select * From OpenRowSet('SqlOleDB','Source=172.21.1.1\MyDBInstace;UID=MyMasterDataBaseUser;PWD=MyMasterDBBaseUserPassword','Select GetDate()');
- OpenDataSource用法示例:
- Select * From OpenDataSource('SqlOleDB','Data Source=172.21.1.1\MyDBInstace;User ID=MyMasterDataBaseUser;Password=MyMasterDBBaseUserPassword').数据库名.架构名.表名
- 这两种方式必须开通 Ad Hoc Distributed Queries。
- OpenRowSet用法示例:
- 启用Ad Hoc Distributed Queries:
- exec sp_configure 'show advanced options',
- reconfigure
- exec sp_configure 'Ad Hoc Distributed Queries',
- reconfigure
- 关闭Ad Hoc Distributed Queries:
- exec sp_configure 'Ad Hoc Distributed Queries',
- reconfigure
- exec sp_configure 'show advanced options',
- reconfigure
参考:http://www.2cto.com/database/201206/136383.html
SqlServer跨库查询的更多相关文章
- SQLServer跨库查询--分布式查询
出处:http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html --用openrowset连接远程SQL或插入数据 --如果只是临 ...
- SQLServer跨库查询--分布式查询(转载)
--用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB' ,'sq ...
- SQLServer 跨库查询实现方法
不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Serve ...
- sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器) 我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instanc ...
- 跨库查询(OpenDataSource)与链接服务器(Linking Server)
一:跨库查询 Openrowset/opendatasource() is an ad-hoc method to access remote server's data. So, if you on ...
- 如何使用SQL SERVER数据库跨库查询
SQL Server中内置了数据库跨库查询功能,下面简要介绍一下SQL Server跨库查询.首先打开数据源码:OPENDATASOURCE不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分 ...
- ACCESS-如何多数据库查询(跨库查询)
测试通过:ACCESSselect * from F:\MYk.mdb.tablename说明:1.查询语句2.来原于哪(没有密码是个路径)3.查询的表名 ====================== ...
- Access数据库跨库查询及记录集区分
医疗设备软件一般都是单机软件,如果是Windows平台,常会选择Access数据库存储结构化数据,因为他轻量,便于部署.然而随着医疗信息化的发展,医生希望对多台单机设备的数据进行管理,采用网络数据库当 ...
- EF 跨库查询
原因:最近公司项目,遇到一个ef跨库查询的问题.(只是跨库,并不是跨服务器哈) 主要我们的一些数据,譬如地址,城市需要查询公共资料库. 但是本身我的程序设计采用的是ef框架的.因此为这事花费了1天时间 ...
随机推荐
- C++类型转化分析(1)
仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视.但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它是一个必需品. 不过C风格的类 ...
- Kafka 0.10.0
2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...
- 【转】设计模式(三)建造者模式Builder(创建型)
(http://blog.csdn.net/hguisu/article/details/7518060) 1. 概述 在软件开发的过程中,当遇到一个"复杂的对象"的创建工作,该对 ...
- ubuntu12.04 安装 php5.4/php5.5
1:修改源(我使用163的源)直接修改/etc/apt/sources.list deb http://mirrors.163.com/ubuntu/ precise main universe re ...
- [Virtualization][SDN] VXLAN到底是什么 [转]
写在转发之前: 几个月以前,在北大机房和燕园大厦直接拉了一根光钎.两端彼此为校园内公网IP.为了方便连接彼此机房,我做个一个VPN server在燕园的边界,北大机房使用client拨回.两个物理机房 ...
- 创建QT CREATOR对话框报错 linux QT Creator :-1: error: cannot find -lGL
装完QT5.4 及 QT Creator3.3 后 创建第一个QT Widgets Application(相当于窗体) 应用程序 报如上错误. 执行 sudo apt-get install lib ...
- TOMCAT源码分析(启动框架)
建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的. 所以得实践.实践.再实践. 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动 ...
- HTML5的新事件
HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击一个 HTML 元素时启动一段 JavaScript. HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击 ...
- C++ 虚函数畅谈
0x01:前言 虚函数是C++里最重要的概念之一,并且是判定C++是否入门的一个热门问题.今天这篇文章简单谈谈虚函数. 0x02:虚函数简介 虚函数可以被子类实现函数所覆盖. virtual是关键字, ...
- 物联网操作系统HelloX V1.80测试版发布
经过HelloX开发团队近半年的努力,在HelloXV1.79版本基础上,增加许多功能特性,并对V1.79版本的一些特性进行了进一步优化之后,正式形成HelloX V1.80测试版本.经相对充分的测试 ...