LoginSignup
1
0

More than 3 years have passed since last update.

Azure SQL Databaseで別のDatabaseを参照

Last updated at Posted at 2021-05-19

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'
     );

これで自分のデータベース内のテーブルと同様に参照できる。
ただ、元テーブルのデータ型次第では参照できないなど、他にも制限事項が多いようだ。

参考:Microsoft Docs | CREATE EXTERNAL TABLE (Transact-SQL)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0