Sqlserver 使用同义词跨服务器数据库连表查询

 

  跨服务器,跨数据库查询并不是什么新鲜事,不过之前在工作中看到一段代码,之前也没有接触过数据库同义词,发现挺方便的。代码示例类似这样:

  代码很普通,奇怪之处在于A 表在服务器ServerA的DatabaseA中,而B表在服务器ServerB的DatabaseB中。于是我第一反应是linked server,但可以这样写吗?没远程Server 的ip,没数据库名,居然也可以连表?于是开始Google。

  之后得出结论,确实使用了linked server,但加上了同义词 synonym。以下开始练习:

  1.首先建了数据库TestA,里面有表UserInfo,里面有一条记录,:

  

  2.然后建数据库TestB,表RoleInfo,也只有一条记录:

  

  先直接跨数据库查询,成功(这里我在本机在测试,因此就不加上跨Server了。如果需要跨Server测试,也是一样,只需要在数据库前加Server 示例地址就好)!得出结果:

 

  看,sql 脚本需要指定数据库名,如果跨了服务器,还需要指定IP,这么麻烦,也易出错,需要改进:

  3.先添加linked server:

  

  

  4.给需要连接的表使用刚创建的linked server 创建同义词,

  

 

   5.最后一步,可以直接连表查询啦:

  

 

   参考地址:

  https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addlinkedserver-transact-sql?view=sql-server-2017

  https://docs.microsoft.com/en-us/sql/relational-databases/synonyms/synonyms-database-engine?view=sql-server-2017

  

  

 

转载于:https://www.cnblogs.com/lhgohead/p/11015610.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值