SQL Server 2005 链接服务器使用一例

来源:互联网 发布:网络彩票最新消息新闻 编辑:程序博客网 时间:2024/06/03 13:47

先说一下我遇到的环境,我手上有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_ipfrom [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 hwhere e.ID = v.IDand v.host_id = h.id 

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

 

create view view_vm_infoas 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_ipfrom [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 hwhere e.ID = v.IDand 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_ipfrom [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 hwhere e.ID = v.IDand v.host_id = h.id 

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩恶心想吐怎么办 孩子和婆婆不好怎么办 孩子吃东西不消化吐怎么办 小孩吃东西吐了怎么办 儿童吃饭容易吐怎么办 宝宝吃饭会吐怎么办 小孩咳嗽还呕吐怎么办 咳嗽严重到呕吐怎么办 幼儿园中班不会写字怎么办 胃难受吐了怎么办 小孩不肯学写字怎么办 孩子不爱穿内裤怎么办 孩子长期不吃肉怎么办 小孩子不吃肉怎么办呢? 一年级小孩写字慢怎么办 听障碍放弃了怎么办 宝宝开始写字该怎么办 恢复的文档乱码怎么办 小孩做作业磨蹭怎么办 宝宝用左手写字怎么办 小孩动作太慢怎么办 幼儿园不去上学怎么办 嫌弃婆婆带孩子怎么办 孩子写字特别慢怎么办 幼儿园孩子不愿写字怎么办 孩子不愿用力写字怎么办 老公得了懒癌怎么办 太懒不想上班怎么办 写字太多手臂痛怎么办 小孩读书务工证怎么办 一年级孩子撕书怎么办 孩子上幼儿园不适应怎么办 一年级没办学籍怎么办 宝宝不爱做作业怎么办 儿子不爱做作业怎么办 我不想去上学怎么办 孩子写字爱玩怎么办 孩子不爱学习写字怎么办 孩子不爱学习成绩差怎么办 小孩默生字很差怎么办 孩子默写不出来怎么办