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 プール はい 無効

Note

現在、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 テーブルを作成します。 同じ名前のターゲット テーブルがすでに存在する場合は、そのテーブルは削除され、最新の完全なスナップショットで上書きされます。

Note

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

サポートされるデータ型

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

Note

  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 (10 進数型)
FILESTREAM attribute (varbinary(max)) Byte[]
Float Double
image Byte[]
INT Int32
money Decimal (10 進数型)
nchar String, Char[]
ntext String, Char[]
numeric Decimal (10 進数型)
nvarchar String, Char[]
real Single
rowversion Byte[]
smalldatetime DateTime
smallint Int16
smallmoney Decimal (10 進数型)
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) での認証には、これらの方法のいずれかを使用できます。

Microsoft Entra 認証

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

  • SQL サーバー上のデータベースへの書き込み権限が必要になります。Microsoft.Sql/servers/databases/write このアクセス許可は、共同作成者ロール内に存在します。
  • SQL Server Microsoft Entra 管理者 のアクセス許可。
  • 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 サーバーに移動し、自分を Microsoft Entra 管理者として設定します。

    2. クエリ エディター、または Microsoft Entra 認証を使用する 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>"; 
      

      Note

      <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 管理者を選択し、自分自身を Microsoft Entra 管理者に設定します。

    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>"; 
      

      Note

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

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

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

共有を作成する

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

    Screenshot showing the data share overview.

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

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

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

    Screenshot of the share creation page in Azure Data Share, showing the share name, type, description, and terms of used filled out.

  5. 続行を選択します。

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

    Screenshot of the datasets page in share creation, the add datasets button is highlighted.

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

    Screenshot showing the available dataset types.

  8. SQL サーバーまたは Synapse ワークスペースを選択します。 Microsoft Entra 認証を使用していて [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 プールからのテーブルを選択できます。

    Screenshot showing the Azure SQL Database dataset window with a SQL server selected.

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

    Screenshot of the recipients page, showing a recipient added.

  10. 続行を選択します。

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

    Screenshot of the settings page, showing the snapshot toggle enabled.

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

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

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

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

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

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

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

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

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

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

  • Azure ストレージ アカウント
  • ストレージ アカウントに書き込む権限: これは、Microsoft.Storage/storageAccounts/write に含まれています。 このアクセス許可は、共同作成者ロール内に存在します。
  • Data Share リソースのマネージド ID のロール割り当てをストレージ アカウントに追加する権限。これは、Microsoft.Authorization/role assignments/write に含まれています。 このアクセス許可は、所有者ロール内に存在します。

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

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

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

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

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

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

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

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

    1. Azure portalで SQL サーバーに移動し、自分を Microsoft Entra 管理者として設定します。

    2. クエリ エディター、または Microsoft Entra 認証を使用する 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>";
      

      Note

      <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 このアクセス許可は、共同作成者ロール内に存在します。

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

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

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

    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>";
      

      Note

      <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 か月間有効になります。

Screenshot of the invitations page, showing a pending invitation.

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

招待を受け入れる

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

    Screenshot of the invitation acceptance page, showing the terms of use highlighted and the agreement selected.

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

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

  4. [Received Share Name] \(受信共有名 \) フィールドでは、データ提供で指定された既定値のままにするか、受信した共有の新しい名前を指定できます。

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

    Screenshot of the acceptance page, showing the target data share account information filled out.

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

受信した共有を構成する

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

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

    Screenshot of the received shares page with the map to target button highlighted.

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

    Screenshot of the map datasets to target window, showing available targets in the dropdown.

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

    Note

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

    Screenshot showing the snapshot schedule tab with the enable button selected.

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

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

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

    Screenshot of the received shares page, showing the trigger snapshot dropdown selected and the full copy option highlighted.

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

    Screenshot of the datasets tab showing a successful dataset selected.

履歴を表示する

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

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

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

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

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

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

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

次のステップ

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