Azure SQL Database と Azure Synapse Analytics からのデータの共有と受信

適用対象: Azure SQL Database Azure Synapse Analytics (旧称 Azure SQL DW) Azure Synapse Analytics (ワークスペース) SQL プール

Azure Data Share では、Azure SQL Database や Azure Synapse Analytics リソースからのデータ スナップショットを、他の Azure サブスクリプションに安全に共有することができます。 テナントの外部に Azure サブスクリプションを含める。

この記事では、Azure SQL Database および Azure Synapse Analytics らのデータの共有について説明します。

この記事では、以下について説明します。

目次から必要な項目にジャンプすることもできます、また、この記事を読み進めて最初から最後までプロセスを追うこともできます。

Image showing the data flow between data owners and data consumers.

サポートされる操作

データの共有

Azure Data Share は、Azure の複数の SQL リソースからの完全なデータ スナップショットの共有をサポートしています。 これらのリソースでは、増分スナップショットは現在サポートされていません。

リソースの種類 テーブルの共有 ビューの共有
Azure SQL データベース はい はい
Azure Synapse Analytics (以前の Azure SQL DW) はい はい
Synapse Analytics (ワークスペース) の専用 SQL プール はい いいえ

注意

現在、Azure Data Share はこれらのリソースからの共有をサポートしていません。

  • Azure Synapse Analytics (ワークスペース) サーバーレス SQL プール
  • 常に暗号化されている Azure SQL データベース

データの受信

データ コンシューマーは、共有データをいくつかの Azure リソースに受け入れることを選択できます。

  • Azure Data Lake Storage Gen2
  • Azure Blob Storage
  • Azure SQL データベース
  • Azure Synapse Analytics

Azure Data Lake Storage Gen 2Azure Blob Storage の共有データは、csv ファイルや parquet ファイルとして保存できます。 完全なデータのスナップショットでは、対象のファイルがすでに存在する場合、その内容が上書きされます。

Azure SQL DatabaseAzure Synapse Analytics の共有データはテーブルに格納されます。 ターゲット テーブルがまだ存在していない場合、Azure Data Share はソース スキーマで SQL テーブルを作成します。 同じ名前のターゲット テーブルがすでに存在する場合は、そのテーブルは削除され、最新の完全なスナップショットで上書きされます。

注意

動的データ マスクを使用するソース SQL テーブルの場合、データは受信側でマスクされて表示されます。

サポートされるデータ型

SQL ソースからデータを共有するとき、スナップショットの処理時には、SQL Server のデータ型から Azure Data Share の中間データ型への、以下のマッピングが使用されます。

注意

  1. 10 進の中間型にマップされるデータ型の場合、スナップショットでは、現在、最大 28 の有効桁数がサポートされています。 28 よりも大きな有効桁数を必要とするデータがある場合は、文字列に変換することを検討してください。
  2. Azure SQL データベースから Azure Synapse Analytics にデータを共有している場合は、すべてのデータ型がサポートされるわけではありません。 詳細については、専用 SQL プールでのテーブルのデータ型に関する記事を参照してください。
SQL Server のデータ型 Azure Data Share の中間データ型
bigint Int64
binary Byte[]
bit Boolean
char String, Char[]
date DateTime
Datetime DateTime
datetime2 DateTime
Datetimeoffset DateTimeOffset
Decimal Decimal
FILESTREAM attribute (varbinary(max)) Byte[]
Float Double
image Byte[]
INT Int32
money Decimal
nchar String, Char[]
ntext String, Char[]
numeric Decimal
nvarchar String, Char[]
real Single
rowversion Byte[]
smalldatetime DateTime
smallint Int16
smallmoney Decimal
sql_variant Object
text String, Char[]
time TimeSpan
timestamp Byte[]
tinyint Int16
UNIQUEIDENTIFIER Guid
varbinary Byte[]
varchar String, Char[]
xml String

データを共有するための前提条件

Azure SQL リソースからデータ スナップショットを共有するには、まず環境を整える必要があります。 必要なものは次のとおりです。

ソース固有の前提条件

データの取得場所に応じて共有するための前提条件もあります。 データ共有のソースを選択し、手順に従ってください。

Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW) から共有するための前提条件

Azure SQL Database または Azure Synapse Analytics (旧 Azure SQL DW) での認証には、これらの方法のいずれかを使用できます。

Azure Active Directory 認証

これらの前提条件は、Azure Data Share が Azure SQL Database と接続するために必要な認証について説明しています。

  • SQL サーバー上のデータベースへの書き込み権限が必要になります。Microsoft.Sql/servers/databases/write この権限は、Azure RBAC Contributor ロールに存在します。
  • SQL Server Azure Active Directory Admin のパーミッションです。
  • SQL Server ファイアウォール アクセス:
    1. Azure portal で、SQL サーバーにナビゲートします。 左側のナビゲーションから [ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要があります。
    4. [保存] を選択します。

SQL 認証

ステップバイステップのデモビデオ に沿って認証を設定するか、それぞれの前提条件を満たすことができます。

  • SQL サーバー Microsoft.Sql/servers/databases/write 上のデータベースへの書き込みを許可します。 このアクセス許可は、共同作成者ロール内に存在します。

  • Azure Data Share リソースのマネージド ID がデータベースにアクセスするためのアクセス許可:

    1. Azure portal で、SQL サーバーに移動し、自分自身を Azure Active Directory 管理者に設定します。

    2. クエリ エディター、または Azure Active Directory 認証を使用する SQL Server Management Studio を使用して Azure SQL Database/Data Warehouse に接続します。

    3. 次のスクリプトを実行し、Data Share リソースのマネージド ID を db_datareader として追加します。 SQL Server 認証ではなく Active Directory を使用して接続します。

      create user "<share_acct_name>" from external provider;     
      exec sp_addrolemember db_datareader, "<share_acct_name>"; 
      

      注意

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • 共有するテーブルやビューに移動して選択するための ’db_datareader’ アクセス権を持つ Azure SQL Database ユーザー。

  • SQL Server ファイアウォール アクセス:

    1. Azure portal で SQL サーバーに移動します。 左側のナビゲーションから [ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要があります。
    4. [保存] を選択します。

Azure Synapse Analytics (ワークスペース) の SQL プールから共有するための前提条件

  • Synapse ワークスペースの SQL プールに対する書き込みアクセス許可: Microsoft.Synapse/workspaces/sqlPools/write このアクセス許可は、共同作成者ロール内に存在します。

  • Data Share リソースのマネージド ID が Synapse ワークスペースの SQL プールにアクセスするためのアクセス許可:

    1. Azure portal で、Synapse のワークスペースに移動します。 左側のナビゲーションから SQL Active Directory 管理者を選択し、自分自身を Azure Active Directory 管理者に設定します。

    2. Synapse Studio を開き、左側のナビゲーションから [管理] を選択します。 [セキュリティ] で [アクセス制御] を選択します。 SQL 管理者またはワークスペース管理者ロールを自分に割り当てます。

    3. Synapse Studio で、左側のナビゲーションから [開発] を選択します。 SQL プールで次のスクリプトを実行して、Data Share リソースのマネージド ID を db_datareader として追加します。

      create user "<share_acct_name>" from external provider;     
      exec sp_addrolemember db_datareader, "<share_acct_name>"; 
      

      注意

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • Synapse ワークスペースのファイアウォール アクセス:

    1. Azure portal で Synapse ワークスペースに移動します。 左側のナビゲーションから [ファイアウォール] を選択します。
    2. [Azure サービスおよびリソースに、このワークスペースへのアクセスを許可する][オン] を選びます。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要があります。
    4. [保存] を選択します。

共有を作成する

  1. Data Share の [概要] ページに移動します。

    Share your data

  2. [Start sharing your data](データの共有の開始する) を選択します。

  3. [作成] を選択します

  4. 共有の詳細を入力します。 名前、共有の種類、共有の内容の説明、利用規約 (省略可能) を指定します。

    EnterShareDetails

  5. [続行] をクリックします。

  6. 共有にデータセットを追加するには、 [データセットの追加] を選択します。

    Add Datasets to your share

  7. 追加するデータセットの種類を選択します。 前のステップで選択した共有タイプ (スナップショットまたはインプレース) に応じて、データセット タイプのリストが異なります。

    AddDatasets

  8. SQL サーバーまたは Synapse ワークスペースを選択します。 Azure Active Directory 認証を使用していて [Allow Data Share to run the above 'create user' SQL script on my behalf](Data Share が上記の 'ユーザーの作成' SQL スクリプトを実行することを許可する) チェックボックスが表示される場合は、このチェックボックスをオンにします。 SQL 認証を使用している場合は、資格情報を提供し、前提条件に従っていることを確認して、権限を得られるようにしてください。

    [次へ] を選択して共有するオブジェクトに移動し、[データセットの追加] を選択します。 Azure SQL Database と Azure Synapse Analytics (旧称 Azure SQL DW) からのテーブルとビュー、または Azure Synapse Analytics (ワークスペース) 専用 SQL プールからのテーブルを選択できます。

    SelectDatasets

  9. [Recipients](受信者) タブで、[+ Add Recipient](+ 受信者の追加) を選択して、データ コンシューマーのメール アドレスを入力します。 このメール アドレスは、受信者の Azure サインイン メールである必要があります。

    AddRecipients

  10. [続行] をクリックします。

  11. スナップショット共有タイプを選択した場合は、データの更新をデータ コンシューマーに提供するスナップショット スケジュールを構成できます。

    EnableSnapshots

  12. 開始時刻と繰り返しの間隔を選択します。

  13. [続行] をクリックします。

  14. [Review + Create](レビュー + 作成) タブで、パッケージの内容、設定、受信者、および同期の設定を確認します。 [作成] を選択します

ご自分の Azure Data Share が作成され、データ共有の受信者が招待を受け取れる状態になりました。

データを受信するための前提条件

データ共有の招待を受ける前に、環境を整える必要があります。

データ共有の招待を受け入れる前に、すべての前提条件を満たしていることを確認します。

また、受信したデータが保存されるリソースにも前提条件があります。 リソースの種類を選択し、手順に従ってください。

ターゲット ストレージ アカウントの前提条件

Azure Storage にデータを受信することを選択した場合は、データ共有を受け入れる前に、以下の前提条件を満たしてください。

  • Azure ストレージ アカウント
  • ストレージ アカウントに書き込む権限: これは、Microsoft.Storage/storageAccounts/write に含まれています。 この権限は、Azure RBAC Contributor ロールに存在します。
  • Data Share リソースのマネージド ID のロール割り当てをストレージ アカウントに追加する権限。これは、Microsoft.Authorization/role assignments/write に含まれています。 この権限は、Azure RBAC Owner ロールに存在します。

Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW) にデータを受信するための前提条件

SQL サーバーの Azure Active Directory 管理者 である SQL サーバーの場合は、データ共有を受け入れる前に次の前提条件を満たしてください。

  • Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW)
  • SQL サーバー Microsoft.Sql/servers/databases/write 上のデータベースへの書き込みを許可します。 この権限は、Azure RBAC Contributor ロールに存在します。
  • SQL Server ファイアウォール アクセス:
    1. Azure portal で、SQL サーバーにナビゲートします。 左側のナビゲーションから [ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要があります。
    4. [保存] を選択します。

Azure Active Directory 管理者ではない SQL サーバーの場合、データ共有を受け入れる前に以下の前提条件を満たしてください。

前提条件の設定は、ステップバイステップのデモ動画、または以下の手順で行うことができます。

  • Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW)

  • SQL サーバー Microsoft.Sql/servers/databases/write 上のデータベースへの書き込みを許可します。 この権限は、Azure RBAC Contributor ロールに存在します。

  • Data Share リソースのマネージド ID が Azure SQL Database または Azure Synapse Analytics にアクセスするためのアクセス許可:

    1. Azure portal で、SQL サーバーに移動し、自分自身を Azure Active Directory 管理者に設定します。

    2. クエリ エディター、または Azure Active Directory 認証を使用する SQL Server Management Studio を使用して Azure SQL Database/Data Warehouse に接続します。

    3. 次のスクリプトを実行し、Data Share のマネージド ID を "db_datareader、db_datawriter、db_ddladmin" として追加します。

      create user "<share_acc_name>" from external provider; 
      exec sp_addrolemember db_datareader, "<share_acc_name>"; 
      exec sp_addrolemember db_datawriter, "<share_acc_name>"; 
      exec sp_addrolemember db_ddladmin, "<share_acc_name>";
      

      注意

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • SQL Server ファイアウォール アクセス:

    1. Azure portal で、SQL サーバーに移動し、[ファイアウォールと仮想ネットワーク] を選択します。
    2. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する][はい] を選択します。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変更される可能性があるため、次回ポータルからデータを共有する際には、再度クライアント IP を追加する必要があります。
    4. [保存] を選択します。

Azure Synapse Analytics (ワークスペース) の SQL プールにデータを受信するための前提条件

  • Azure Synapse Analytics (ワークスペース) の専用 SQL プール。 サーバーレス SQL プールへのデータの受信は、現在サポートされていません。

  • Synapse ワークスペースの SQL プールに対する書き込みアクセス許可: Microsoft.Synapse/workspaces/sqlPools/write この権限は、Azure RBAC Contributor ロールに存在します。

  • Data Share リソースのマネージド ID が Synapse ワークスペースの SQL プールにアクセスするためのアクセス許可:

    1. Azure portal で Synapse ワークスペースに移動します。

    2. 左側のナビゲーションから SQL Active Directory 管理者を選択し、自分自身を Azure Active Directory 管理者に設定します。

    3. Synapse Studio を開き、左側のナビゲーションから [管理] を選択します。 [セキュリティ] で [アクセス制御] を選択します。 SQL 管理者またはワークスペース管理者ロールを自分に割り当てます。

    4. Synapse Studio で、左側のナビゲーションから [開発] を選択します。 SQL プールで次のスクリプトを実行して、Data Share リソースのマネージド ID を "db_datareader、db_datawriter、db_ddladmin" として追加します。

      create user "<share_acc_name>" from external provider; 
      exec sp_addrolemember db_datareader, "<share_acc_name>"; 
      exec sp_addrolemember db_datawriter, "<share_acc_name>"; 
      exec sp_addrolemember db_ddladmin, "<share_acc_name>";
      

      注意

      <share_acc_name> は、ご自分の Data Share リソースの名前です。

  • Synapse ワークスペースのファイアウォール アクセス:

    1. Azure portal で Synapse ワークスペースに移動します。 左側のナビゲーションから [ファイアウォール] を選択します。
    2. [Azure サービスおよびリソースに、このワークスペースへのアクセスを許可する][オン] を選びます。
    3. [+クライアント IP の追加] を選びます。 クライアントの IP アドレスは変わることがあります。 次回 Azure portal から SQL データを共有するときにも、このプロセスを繰り返すことが必要になる場合もあります。
    4. [保存] を選択します。

共有データの受信

招待を開く

招待は、メールから開くことができるほか、Azure portal から直接開くこともできます。

招待をメールから開くには、受信トレイでデータ プロバイダーからの招待を確認します。 招待は Microsoft Azure からで、件名は " yourdataprovider@domain.com からの Azure Data Share の招待" になっています。 [招待を表示] を選択して、Azure で招待を確認します。

Azure portal から直接招待を開く場合は、Azure portal で Data Share の 招待を検索します。Data Share 招待の一覧が表示されます。

テナントのゲスト ユーザーの場合は、Data Share の招待状を初めて見る前に、テナントのメールアドレスを確認する必要があります。 確認が完了すると、電子メールは 12 か月間有効になります。

List of Invitations

次に、表示する共有を選択します。

招待を受け入れる

  1. [使用条件] を含む、すべてのフィールドを確認してください。 使用条件に同意する場合は、同意を示すボックスをオンにする必要があります。

    Terms of use

  2. [Target Data Share Account](ターゲット データ共有アカウント) の下で、ご自分のデータ共有のデプロイ先となるサブスクリプションとリソース グループを選択します。

  3. [Data Share Account](データ共有アカウント) フィールドには、既存のデータ共有アカウントがない場合には、 [新規作成] を選択します。 それ以外の場合は、自分のデータ共有を受け入れる既存のデータ共有アカウントを選択します。

  4. [Received Share Name](受信した共有名) フィールドは、データの指定で指定された既定のままにしておくことも、受信した共有のために新しい名前を指定することもできます。

  5. 利用規約に同意し、受信した共有を管理するための Data Share アカウントを指定したら、 [Accept and configure](受け入れと構成) を選択します。 共有サブスクリプションが作成されます。

    Accept options

招待を受け入れたくない場合は、[拒否] を選択します。

受信した共有を構成する

データを受信する場所を構成するには、次の手順に従います。

  1. [データセット] タブを選択します。ターゲット先を割り当てるデータセットの横にあるチェックボックスをオンにします。 [+ ターゲットへのマップ] を選択し、ターゲット データ ストアを選択します。

    Map to target

  2. 共有データを格納するターゲット リソースを選択します。 パスと名前が同じターゲット データ ストア内のすべてのデータ ファイルまたはデータ テーブルが上書きされます。 データを SQL ストアに受け取っていて [Allow Data Share to run the above 'create user' SQL script on my behalf](Data Share が上記の 'ユーザーの作成' SQL スクリプトを実行することを許可する) チェックボックスが表示される場合は、このチェックボックスをオンにします。 それ以外の場合は、前提条件の指示に従って画面に表示されるスクリプトを実行します。 これにより、Data Share リソースの書き込みアクセス許可が対象の SQL DB に付与されます。

    Target storage account

  3. スナップショットベースの共有の場合、データに定期的な更新を提供するためのスナップショット スケジュールがデータ プロバイダーによって作成されていれば、[スナップショット スケジュール] タブを選択して、スナップショット スケジュールを有効にすることもできます。スナップショット スケジュールの横にあるチェック ボックスをオンにし、[+ Enable](+ 有効) を選択します。

    注意

    スケジュールされた最初のスナップショットは、スケジュール時刻から 1 分以内に開始され、次のスナップショットはスケジュール時刻から数秒以内に開始されます。

    Enable snapshot schedule

スナップショットをトリガーする

これらの手順は、スナップショットベースの共有にのみ適用されます。

  1. スナップショットをトリガーするには、 [詳細] タブ、 [スナップショットのトリガー] の順に選択します。 ここでは、データの完全なスナップショットをトリガーすることができます。 データ プロバイダーから初めてデータを受信する場合は、完全なコピーを選択します。 スナップショットの実行中は、前のスナップショットが完了するまで次のスナップショットが開始されません。

    Trigger snapshot

  2. 最終実行状態が "成功" の場合、ターゲット データ ストアに移動して、受信したデータを表示します。 [データセット] を選んで、ターゲット パスのリンクをクリックします。

    Consumer datasets

履歴を表示する

この手順は、スナップショットベースの共有にのみ適用されます。 スナップショットの履歴を表示するには、 [履歴] タブを選択します。ここには、過去 30 日間に生成されたすべてのスナップショットの履歴があります。

スナップショットのパフォーマンス

SQL スナップショットのパフォーマンスは、さまざまな要因の影響を受けます。 常に、独自のパフォーマンス テストを実施することをお勧めします。 パフォーマンスに影響するいくつかの要因の例を下に示します。

  • ソースまたはコピー先のデータ ストアの 1 秒あたりの入出力操作数 (IOPS) と帯域幅。
  • ソースとターゲットの SQL データ ストアのハードウェア構成 (例: vCores、メモリ、DWU)。
  • ソースとターゲットのデータ ストアへの同時アクセス。 同じ SQL データ ストアから複数のテーブルとビューを共有している場合、または複数のテーブルとビューを同じ SQL データ ストアに受信する場合、パフォーマンスに影響します。
  • ソースとコピー先のデータ ストア間のネットワーク帯域幅と、ソースとターゲットのデータ ストアの場所。
  • 共有するテーブルとビューのサイズ。 SQL スナップショット共有では、テーブル全体の完全なコピーが行われます。 テーブルのサイズが時間の経過と共に増加すると、スナップショットの処理時間が長くなります。

増分更新が必要な大きなテーブルでは、ストレージ アカウントに更新をエクスポートし、ストレージ アカウントの増分共有機能を利用してパフォーマンスを向上させることができます。

スナップショット エラーのトラブルシューティング

スナップショット エラーの最も一般的な原因は、Data Share にソースまたはターゲットのデータ ストアへのアクセス許可がないことです。 ソースまたはターゲットの Azure SQL Database または Azure Synapse Analytics (旧称 Azure SQL DW) へのアクセス許可を Data Share に付与するには、Azure Active Directory 認証を使用して SQL データベースに接続するときに、提供された SQL スクリプトを実行する必要があります。 その他の SQL スナップショット エラーをトラブルシューティングするには、スナップショット エラーのトラブルシューティングに関する記事を参照してください。

次の手順

Azure Data Share サービスを使用して SQL ソースからデータを共有および受信する方法について学習しました。 他のデータ ソースからの共有の詳細については、サポートされているデータ ストアに関するページに進んでください。