zoukankan      html  css  js  c++  java
  • [原]SQL Server 2005 链接服务器使用一例

    先说一下我遇到的环境,我手上有N个SQL Server Express Edition的数据库,他们的结构都是一样的,只是存放的数据不一样,数据库的个数将会增长。现在我希望能查询这些数据,其中比较笨的方法是,每个数据库都连接一下,执行SQL,示意图如下:

    image

    这种做法的缺点是:应用程序相对复杂,如果弄不好,后期的可维护性不好。

    第二种方法是使用SQL Server的订阅发布功能,定时从各个数据库导出需要的数据到一个“中心数据库”,应用程序就比较简单,毕竟只是链接一个SQL Server啊,示意图如下:

    image

    但是配置SQL Server的订阅发布还是比较麻烦,而且SQL Server Express Edition的数据库的个数还会增长,每个都这样配置一下,工作量很大。

    综合考虑以上两种方案的优缺点,使用SQL Server的链接服务器功能可以很容易地解决这个问题。

    在中心数据库上,执行如下语句,建立“链接服务器”和“链接服务器登录”,语句如下:

    exec sp_addlinkedserver '12.34.56.41','SQL Server';
    exec sp_addlinkedsrvlogin '12.34.56.41','false',null,'dbUser','p@ssw0rd'
    exec sp_addlinkedserver '12.34.56.42','SQL Server';
    exec sp_addlinkedsrvlogin '12.34.56.42','false',null,'dbUser','p@ssw0rd'
    ..........
    ..........
    ..........
    ..........
    ..........
    exec sp_addlinkedserver '12.34.56.47','SQL Server';
    exec sp_addlinkedsrvlogin '12.34.56.47','false',null,'dbUser','p@ssw0rd'
    exec sp_addlinkedserver '12.34.56.48','SQL Server';
    exec sp_addlinkedsrvlogin '12.34.56.48','false',null,'dbUser','p@ssw0rd'

    虽然语句比较多,但是不难发现完全可以找个“工具”生成一下,新增的数据库只需要执行类似的语句就可以了。

    查询语句要加上服务器名,如下:

    select e.ID as VMID, e.NAME, 
    	   v.ip_address as vm_ip,
    	   v.power_state as power_state,
           v.guest_state as guest_state , 
           h.ip_address as host_ip
    from 
    [12.34.56.41].VIM_VCDB.dbo.VPX_ENTITY e, 
    [12.34.56.41].VIM_VCDB.dbo.VPX_VM v  , 
    [12.34.56.41].VIM_VCDB.dbo.vpx_host h
    where e.ID = v.ID
    and v.host_id = h.id 

    为了让数据查询起来更加方便,我拣了一个视图,将多个数据库的数据“集中”起来

    create view view_vm_info
    as 
    select e.ID as VMID, e.NAME, 
    	   v.ip_address as vm_ip,
    	   v.power_state as power_state,
           v.guest_state as guest_state , 
           h.ip_address as host_ip
    from 
    [12.34.56.41].VIM_VCDB.dbo.VPX_ENTITY e, 
    [12.34.56.41].VIM_VCDB.dbo.VPX_VM v  , 
    [12.34.56.41].VIM_VCDB.dbo.vpx_host h
    where e.ID = v.ID
    and v.host_id = h.id 
    
    union all 
    
    ....................
    ....................
    ....................
    ....................
    
    union all 
    
    select e.ID as VMID, e.NAME, 
    	   v.ip_address as vm_ip,
    	   v.power_state as power_state,
           v.guest_state as guest_state , 
           h.ip_address as host_ip
    from 
    [12.34.56.47].VIM_VCDB.dbo.VPX_ENTITY e, 
    [12.34.56.47].VIM_VCDB.dbo.VPX_VM v  , 
    [12.34.56.47].VIM_VCDB.dbo.vpx_host h
    where e.ID = v.ID
    and v.host_id = h.id 

    但是查询链接服务器的性能不太好,于是,我在“中心”数据库建一张表,和视图的结构一样,用于存放试图中的数据。

  • 相关阅读:
    ssm框架搭建出现的异常:The import org.springframework cannot be resolved
    ssm框架中的乱码问题的解决
    json语法和使用
    AJAX概述和简单使用
    JavaScript给动态插入的元素添加事件绑定
    Vue常用开源项目汇总
    ERROR in Template execution failed: ReferenceError: htmlwebpackPlugin is not defined
    Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat
    vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin
    Error: Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
  • 原文地址:https://www.cnblogs.com/killkill/p/1529189.html
Copyright © 2011-2022 走看看