この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
Azure Data Share は定期的なデータ共有に有効なサービスです。
Azure Data Share は自テナント以外の相手に Blob コンテナーや SQL Database 等のサポートされるデータセットを指定して共有することができ、且つ共有する間隔や有効期限も設定することができます。勿論、それらをポータルにて管理することができます。
この記事では、Azure Data Share でテナントをまたいで Blob ストレージ及び SQL Database のテーブルデータを共有した結果を記載します。
データの共有
Azure Data Share を使用するには、共有する側・される側のサブスクリプション双方に Azure Data Share リソースを作成します。
※作成方法については割愛します。
データを共有する側では「データの共有を開始する」をクリックします。
![](/wp-content/uploads/2021/02/image-13-1024x332.png)
共有名と共有の種類 (※) を選択します。ここでは、スナップショットを指定します。
※スナップショット・・・データのコピーを提供する。BlobやSQLDBなど。
※指定場所・・・ソースへの直接データアクセスを提供する。Azure Data Explorerのみ。
![](/wp-content/uploads/2021/02/image-12-1024x884.png)
共有するデータを選択します。
![](/wp-content/uploads/2021/02/image-14-1024x588.png)
Blob ならば、ストレージアカウント > コンテナー を選択します。コンテナーは複数選択可能です。
![](/wp-content/uploads/2021/02/image-15-1024x587.png)
![](/wp-content/uploads/2021/02/image-16-1024x585.png)
または、SQLDB ならばまずサーバーを選択します。このとき、サーバーに Data Share のマネージドID に対してデータ読み取り権限を付与するスクリプトが表示されますので、Azure ポータルのクエリエディター等で適宜実行します。
![](/wp-content/uploads/2021/02/image-17-1024x589.png)
次に同期対象のテーブルを選択します。
![](/wp-content/uploads/2021/02/image-18-1024x586.png)
同期するデータを決めたら、同期したい相手のアカウントを入力します。
※同期期限を設定することも可能です。
![](/wp-content/uploads/2021/02/image-19-1024x578.png)
日次または毎時の同期スケジュールを選択し、データの共有を作成します。
![](/wp-content/uploads/2021/02/image-20-1024x587.png)
データの受け入れ
データを共有された側のメールアドレスには、Data Share からデータ共有の招待メールが送信されます。記載されているリンクをクリックし Azure ポータルにサインイン後、データを受け取る Data Share リソースを選択します。
![](/wp-content/uploads/2021/02/image-21-1024x271.png)
次に、サブスクリプション及びデータを受け入れるストレージアカウントや SQLDB 等のデータセットを選択します。
※SQLDB では共有作成時と同様、共有先サーバーに Data Share のマネージドID に対してデータ読み取り・書き込み権限等を付与するスクリプトが表示されますので、Azure ポータルのクエリエディター等で適宜実行します。
※画面ショットは SQLDB のマップ画面です。なお、DB に同名のテーブルは不要です。
※Blob コンテナー共有時、コンテナーは先に作成しておきます。
![](/wp-content/uploads/2021/02/image-22-1024x625.png)
SQLDB では、共有されたデータをマップする際にテーブル名を変更することも可能です。
![](/wp-content/uploads/2021/02/image-23-1024x644.png)
最後にスケジュールを有効にします。
![](/wp-content/uploads/2021/02/image-24-1024x376.png)
データ共有の確認
SQLDB・Blob コンテナー共に、データ共有元が指定したスケジュール間隔で共有先へデータがコピーされていることが確認できました。
以下は SQLDB の共有元・共有先のテーブル一覧とデータです。
▼ データ共有元
サンプルデータベースの複数のテーブルが存在します。
![](/wp-content/uploads/2021/02/image-26-1024x568.png)
▼ データ共有先
選択したテーブルのみ、且つ、マップした名前 (Customer → Customer2) でデータコピーされています。
![](/wp-content/uploads/2021/02/image-27-1024x569.png)
また、データを受信する共有先でも、手動で完全コピーまたは増分コピーすることでスケジュールに依らないデータコピーが可能です。
※増分コピーは SQLDB ではサポートされていません。
![](/wp-content/uploads/2021/02/image-25-1024x463.png)
まとめ
Azure Data Share を使うと、定型業務でのデータコピーなどが楽になります。
コピースクリプトを作成する手間や定期実行する環境を用意する必要がありませんし、ストレージアカウントであればアクセスキーの管理も不要になります。相手ユーザーを自テナントにゲスト招待する必要もありません。
その他のメリットとして、ポータルで可視化されていること、履歴が残ること、データ共有元では任意に共有を停止できること、共有先ではストレージアカウントの変更やSQLDBの変更などがポータルで後から柔軟に変更可能等が考えられ、便利且つ安全に共有することが出来ます。
デメリットや留意点としては、Azure Data Share によるデータ操作のため、共有元・共有先の当該リソースは Azure 基盤側からもアクセス可能にする必要があること、料金が仮想コア時間により机上予測がつきにくいことなどがあります。
この記事で Azure Data Share の理解が深まりましたら幸いです。
・参考URL
Azure Data Share とは
Azure Blob Storage と Azure Data Lake Storage からデータを共有および受信する
Azure SQL Database と Azure Synapse Analytics からのデータの共有と受信
Azure Data Share の料金について