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