Azure SQL Databaseで別のAzure SQL Databaseを参照する手順
1. Master Keyを作成する
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password1';
GO
作ったマスターキーはファイルに出力してバックアップしておくべきらしいが、以下のSQLでは、'BACKUP MASTER KEY' is not supported in this version of SQL Server.となった・・・
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password1';
BACKUP MASTER KEY TO FILE = 'c:\temp\exportedmasterkey'
ENCRYPTION BY PASSWORD = 'password2';
GO
参考:Microsoft Docs | CREATE MASTER KEY (Transact-SQL)
2. データベーススコープの資格情報を作成する
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password1';
CREATE DATABASE SCOPED CREDENTIAL [資格情報名] WITH IDENTITY='ログイン名', SECRET='パスワード';
GO
作成した資格情報は以下のSQLで確認できる
SELECT * FROM sys.database_scoped_credentials;
参考:Microsoft Docs | CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
3. 外部データソースを作成する
CREATE EXTERNAL DATA SOURCE ExternalDatabaseName
WITH
(
TYPE=RDBMS,
LOCATION='<ServerName>.database.windows.net',
DATABASE_NAME='ExternalDatabaseName',
CREDENTIAL=[資格情報名]
);
参考:Microsoft Docs | CREATE EXTERNAL DATA SOURCE (Transact-SQL)
4.参照したいテーブルから、外部テーブルを作成する
CREATE EXTERNAL TABLE [dbo].TableName (
[id] int NOT NULL,
[name] nvarchar(64) NULL,
)
WITH (DATA_SOURCE = [ExternalDatabaseName],
SCHEMA_NAME = 'dbo',
OBJECT_NAME = 'TableName'
);
これで自分のデータベース内のテーブルと同様に参照できる。
ただ、元テーブルのデータ型次第では参照できないなど、他にも制限事項が多いようだ。