Azure SQL Databaseで他のDBにクエリを投げる

MS開発部の 永田 です。
本投では、Azure SQL Databaseで他のDBにクエリを投げる方法を紹介致します。
オンプレミスのSQL Serverの場合は、同じインスタンスにいるならSELECT * FROM [データベース名].[スキーマ名].[テーブル名]でSELECT出来ましたが、Azureでは出来ず、不便だと思った事はありませんか。
そんな時の解決方法を今回紹介致します。
他DBへSQLを投げる準備
手順1、2、3は以前紹介されているAzure SQL DataWarehouse① PolyBaseで高速インポートとほぼ同じ手順になります。
1.マスターキーの作成データベースマスターキーが未作成の場合は作成してください。データスコープの資格情報を作成するために必要です。 一度作成すれば以降は作成不要です。
1 |
CREATE MASTER KEY; |
2.データベースの資格情報を作成します。
1 |
CREATE DATABASE SCOPED CREDENTIAL User WITH IDENTITY = User, SECRET = Password; |
3.外部データソースの定義
外部データソースの定義を作成します。
DATA SOURCE、DATABASE_NAMEにリソース名
LOCATIONにAzureに保存するサーバー
CREDENTIALに2で作成した資格情報を入力します。
1 2 |
CREATE EXTERNAL DATA SOURCE DB1 WITH( TYPE=RDBMS, LOCATION='〇〇〇.database.windows.net', DATABASE_NAME='DB1', CREDENTIAL= User); |
3までの手順が完了すると、SSMSから参照した時に、外部データソースに追加したデータベースが表示されます。
他DBへSQLを投げる
上記手順が全て完了したら準備は完了しましたので、後はSQLを投げるだけになります。投げ方はAzure SQL Databaseに用意されているストアド プロシージャ「sp_execute_remote」を利用します。
1 |
EXEC sp_execute_remote N'DB1',N'SELECT * FROM SampleTable' |
詳細はMSサイトsp_execute_remote (Azure SQL データベース) | Microsoft Docsをご参照ください。
以上、Azure SQL Databaseで他のDBにクエリを投げる方法の紹介でしたが、いかがでしたでしょうか。
次回以降もSharePointやAzure、O365全般について紹介していきたいと思います。
以上、最後までご愛読いただき
ありがとうございました。
お問い合わせは、
以下のフォームへご連絡ください。