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

  

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM