SQL Server 2008数据库分布式查询知识

作者:chenqiangdage 时间:2024-01-25 10:13:08 

在接触公司一个系统时,公司使用的是SQL Server 2008数据库,里面涉及到了多个数据库之间的查询,而且数据库是分布式的,数据库分布在多台服务器之间,并且各个数据库各尽其责,负责存放不同模块功能的数据。这里面就要涉及到了数据库的分布式查询。

补充一下分布式查询的知识:

分布式查询从多异类数据源中访问数据。这些数据源可以存储在同一台计算机或不同的计算机上。Microsoft SQL Server 通过使用 OLE DB 来支持分布式查询。

SQL Server 用户可以使用分布式查询访问以下内容:

  • 存储在多个 SQL Server 实例中的分布式数据。

  • 存储在各种可以使用 OLE DB 访问接口访问的关系和非关系数据源中的异类数据。

OLE DB 访问接口将在称为行集的表格格式对象中公开数据。SQL Server 允许在 Transact-SQL 语句中像引用 SQL Server 表一样引用 OLE DB 访问接口中的行集。

外部数据源中的表和视图可以在 SELECT、INSERT、UPDATE 和 DELETE Transact-SQL 语句中直接引用。因为分布式查询使用 OLE DB 作为基本接口,因此它们不仅可以访问带有 SQL 查询处理器的传统 DBMS 系统,也可以访问复杂的、具有不同功能的数据源所管理的数据。只要拥有数据的软件通过 OLE DB 访问接口在表格格式行集中公开其数据,就可在分布式查询中使用此数据

SQL Server 2008数据库分布式查询知识

因为公司的业务要经常使用不同服务器上的数据库,所以公司的数据库都建立了一堆的链接服务器。通过建立这些链接服务器,就可以使用这些链接服务器的别名来简化SQL语句的编写和sql开销;

使用SQL SERVER 2008管理工具可以直接界面化的添加链接服务器;这里给出使用sql语句,利用系统存储过程来添加链接服务器的方法,这里要用到两个存储过程:


sp_addlinkedserver
sp_addlinkedsrvlogin

一个是添加链接服务器,一个是添加链接服务器连接登陆验证;具体此两个存储过程参数含义,请参考微软手册;注意,执行此存储过程登陆的用户必须要有Sysadmin权限才能执行;

假设现在在10.155.25.100 上的db中要使用10.155.24.101上一个 FlieDB01表中的信息;则在10.155.25.100上进行如下SQL 语句:


exec sp_addlinkedserver
@server='SZDB01', --要添加的连接服务器的别名
@srvproduct='',
@provider='SQLOLEDB',--指定通过SQLOLEDB链接
@datasrc='10.155.24.101'--DB地址
exec sp_addlinkedsrvlogin
'SZDB01',--连接服务器的别名
'false',
NULL,
'szUSER',--登陆用户名
'Password@123'--登陆密码
--执行完之后就可以写这样的查询语句了
select *from openquery([SZDB01],'select file_No,file_Name from FileDB01.dbo.getFileList()') as tableA --这里的DZDB01就是上面添加的连接服务器的别名

有多个就添加多个连接服务器;这是其中的一种;

还有一种就是使用opendatasource,这是SQL的一个函数,其能够打开指定的DB,而且这个函数的执行权限很低,技术手册中说任何人都可以执行此函数;这个函数也是hacker常用的数据爆表的一个手段;目前查看SQL Server 2008的手册中,其说明还是说所有人都有权限执行;

这个函数只能是不常用的查询中会用到;

举一个简单的例子:


select * from opendatasource('SQLOLEDB','Data Source=10.155.24.100;User ID="szUSER";Password="Password@123"') as tableA

这个也是对上面的一种实现;

opendatasource还可以直接打开mdb这类文件。这种我就没有去试验了,技术从书中有说明;


select * from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="d:/abcd.mdb"')

来源:https://blog.csdn.net/chenqiangdage/article/details/19134243

标签:sql,server,分布式查询
0
投稿

猜你喜欢

  • JS实现十字坐标跟随鼠标效果

    2024-04-22 22:43:00
  • Python使用OpenPyXL处理Excel表格

    2022-07-29 21:10:21
  • vue axios拦截器常用之重复请求取消

    2023-07-02 17:03:21
  • 启动Atom并运行python文件的步骤

    2023-12-22 02:26:11
  • Python批量删除txt文本指定行的思路与代码

    2021-05-12 22:49:45
  • 手把手教你学会HBuilder打包APP

    2022-03-25 00:43:53
  • Python模拟用户登录验证

    2021-07-12 19:58:28
  • Python3 中文文件读写方法

    2021-07-14 20:02:39
  • Javascript遍历Html Table示例(包括内容和属性值)

    2024-05-22 10:40:53
  • 浅谈Python的字典键名可以是哪些类型

    2021-06-13 11:39:47
  • asp正则表达式详细说明

    2008-10-23 16:23:00
  • python是否适合网页编程详解

    2021-04-19 11:35:47
  • Python Django 简单分页的实现代码解析

    2021-11-05 13:27:38
  • Django项目中表的查询的操作

    2023-04-23 10:22:23
  • mysql实现事务的提交和回滚实例

    2024-01-23 04:13:12
  • openCV实践项目之银行卡卡号识别功能

    2022-04-19 19:23:29
  • python 中的 BeautifulSoup 网页使用方法解析

    2022-06-25 19:09:26
  • python树莓派红外反射传感器

    2022-12-05 16:11:47
  • python 使用元类type创建类

    2021-06-27 21:11:48
  • python 安装教程之Pycharm安装及配置字体主题,换行,自动更新

    2021-01-02 06:34:20
  • asp之家 网络编程 m.aspxhome.com