讓Azure SQL Database 可以跨DB查詢資料表
Published in
2 min readJul 16, 2020
使用Azure SQL Database PaaS服務都知道,如果在同一個Azure SQL Database Server建立兩個資料庫,即使你的帳號可以讀取兩個資料的資料表,但是,實際上你卻不可能像用VM或是地端SQL一樣,直接跨DB讀另一個DB的資料表。
目前可以用的做法就是透過EXTERNAL DATA SOURCE方式來讀取資料。做法可以共四步驟
- 建立MASTER KEY ENCRYPTION
- 建立 DATABASE SCOPED CREDENTIAL
- 建立EXTERNAL DATA SOURCE
- 建立對應資料表
使用上述的Script,把需要置換的換成你要的就可以。如果事前已經有設定過Master Key 這裡也可以不需要設定,這只需要設定一次。
在外部資料來源就可以看到剛剛設定好的來源端。之後就是要設定資料表,基本上我們會設定資料表會跟來源端都是相同。而建立資料表一定要用CREATE EXTERNAL TABLE
而不是CREATE TABLE
建立好之後,就可以在外部資料表看到剛剛參照進來的資料表,同時,資料也在裡面了
透過這樣方式,就可以做到跨DB查詢對方資料表的資料了。如果來源端DB被很多DB作為外部資料表,這台DB效能就必須開高一點,不然在查詢時候會出現效能的瓶頸