[作業メモ] 専用 SQL プール (以前の SQL DW) 上で Synapse ワークスペース機能を有効にする

# はじめに
以前の Azure SQL Data Warehouse (SQL DW) の名称が Azure Synapse Analytics の専用 SQL プールに変更されてしばらく経ちます。以下公式ドキュメントで、以前の SQL DW のリソースを残しつつ Synapse ワークスペース機能を有効にする手順が公開されていますので、実際に試してみた結果を簡単にまとめたいと思います。

[Synapse ワークスペース機能を有効にする - Azure Synapse Analytics | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/synapse-analytics/sql-data-warehouse/workspace-connected-create)

お約束ですが、公式ドキュメントの進化は早いため、本 Qiita 記事が古くなる可能性があります。必ず公式ドキュメントも合わせて参照ください。

# 1. 専用 SQL プール (以前の SQL DW) の作成
専用 SQL プール (以前の SQL DW) を Azure ポータルから新規作成していきます。

* `sql dw` で検索してクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/486d9161-eda5-8980-e01d-d3faa03154af.png)

* リソースグループ、SQL プール名、サーバー、パフォーマンス レベルなどの必要な情報を入力します。パフォーマンス レベルはコスト節約のため最小の DW100c にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/dca96424-850c-bfdf-c37a-47701bce02ce.png)

* 手元の PC からテスト接続するため [パブリック エンドポイント] にチェック、[現在のクライアント IP アドレスを追加する] で [はい] を選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/35e9a100-2f03-8ba4-b8e4-3752e8141c81.png)

* データが入っていた方が検証的に分かりやすいので [既存のデータを使用します] で [サンプル] を選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/cde2856b-0f0f-6e93-1879-094f1706381a.png)

* これで確認及び作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/586509fd-261f-6b4a-2392-2033daadbdc8.png)

* デプロイが正常に完了することを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/bfa9623c-5856-2aca-c215-7a7d765e2e7c.png)

* リソース グループを見ると、以下のように [SQL Server] と [専用 SQL プール (以前の SQL DW)] のリソースが作成されているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/92c38d23-2ca5-85a4-60a7-ee6c5ae57e65.png)

* 作成した [専用 SQL プール (以前の SQL DW)] の [クエリ エディター (プレビュー)] の画面です。サンプルのデータの存在が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/7720c056-712d-c12f-b6d0-f0011d370495.png)

これで専用 SQL プール (以前の SQL DW) の作成は完了です。

# 2. Synapse ワークスペース機能の有効化
次に、作成した専用 SQL プール (以前の SQL DW) 上で Synapse ワークスペース機能を有効にします。

* 作成した専用 SQL プール (以前の SQL DW) の [概要] で [新しい Synapse ワークスペース] をクリックします。もしくは下の [専用の SQL プール (中略) ここにワークスペースを作成します。] をクリックしても OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/3a9d9359-4840-0147-2fb2-11cb4e57c553.png)

* すると、新しい Azure Synapse ワークスペースの作成という内容が表示されますので [続行] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/b722ab63-9ee3-403d-0372-5d1ea1d3e21f.png)

* Synapse ワークスペースの作成画面に遷移しますので必要事項を入力していきます。一から Synapse ワークスペースを作成する際にはサブスクリプションやリソース グループ、ワークスペース名、地域は自身で内容を入力できますが、専用 SQL プール (以前の SQL DW) 上で Synapse ワークスペース機能を有効にする場合にはこれらは編集不可になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/5118fcd8-9a52-8003-3eec-519de273a355.png)

* 次画面以降は必要事項を入力して次へ進めていき、問題なければ作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/3587683d-84f9-7b1e-3276-e19541761a1a.png)

* (次画面)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/42167c16-aa50-6c46-5106-f2c3b43deccc.png)

* (作成確認画面)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/62808c05-4750-8ac6-f5b3-14d7e6bb53a0.png)

* デプロイが正常に完了することを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/76d169db-f4fd-30fb-7bc2-e909c6354b37.png)

## Synapse ワークスペース機能の有効化のデプロイが失敗する場合
以下の `User not allowed to create connected workspace.` のようなエラー メッセージが出てデプロイが失敗する場合、権限 (Azure RBAC) 周りが原因の可能性があります。

```JSON:エラーメッセージ
{
  "code": "DeploymentFailed",
  "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.",
  "details": [
    {
      "code": "AzureRbacAccessNotAllowed",
      "message": "User not allowed to create connected workspace."
    }
  ]
}
```

Synapse ワークスペース機能の有効化を行う人が、対象のサブスクリプションまたはリソース グループに対して Azure RBAC の所有者 (Owner) ロールまたは共同作成者 (Contributor) ロール、またはこれらと同等の権限を持っている必要があります。

サブスクリプションまたはリソース グループの [アクセス制御 (IAM)] を確認し、ロールが不足している場合は自身でロールを付与するか、自組織の管理者に相談して付与してもらいましょう。

(以下の例では所有者ロールがルート スコープでアタッチされているので正常にデプロイが完了しました)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/69de512e-d668-f774-b38d-ad260954ca1b.png)

# 3. Synapse ワークスペース機能の有効化後の設定
ここからは機能有効化後の設定です。

* リソース グループを見てみると Synapse ワークスペースとストレージ アカウントが追加されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/bf7caff2-a579-78f5-7c13-ba3a4265fc4d.png)

* Synapse ワークスペースはこのように表示されます。[接続しているサーバー] という通常の Synapse ワークスペースには無い項目や、SQL プールの種類が [専用 (以前の SQL DW)] (通常の Synapse ワークスペースだと [専用] のみ) となっていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/5033df34-47c4-de4d-e17a-ebc2559138f6.png)

* (以下参考: 通常の Synapse ワークスペースの [概要])
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/a327eb3c-76e2-b1d9-bc3e-002c14d6acab.png)

* Synapse ワークスペースの [概要] の [接続しているサーバー] をクリックすると論理 SQL Server の [概要] に遷移するので、[ファイアウォール設定の表示] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/af850fd3-afbd-2575-2488-4192a21b3c91.png)

* ファイルウォール設定画面で、自身がアクセスできる設定になっていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/3579deff-aa97-7a61-a014-13d50c31c136.png)

* 論理 SQL Server の左メニューの [Active Directory 管理者] にアクセスし、管理者が設定されていることを確認します。設定されていない場合は自身などを管理者に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/8b2dadcb-536e-08bc-3bf3-f66cde87f5cd.png)

* (管理者設定後の表示)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/3b171b51-0d5c-812b-85eb-31c674b178b7.png)

* ここまで設定したら Synapse ワークスペースの [概要] に戻り [Synapse Studio を開く] の [オープン] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/54cfddac-6009-16cf-5b94-d0b95e9440e8.png)

* Synapse Studio の [Data] ハブです。ここまで正常に設定できていれば、専用 SQL プールのテーブル一覧が表示され、クエリを実行してレコードを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/21d4c00c-36c4-757c-9587-6283fa604188.png)

## Synapse Studio でテーブル一覧などが表示されない場合
* もし次のように `Load failed for user` というエラーメッセージが出て、テーブル一覧が表示されない場合、論理 SQL Server の Active Directory 管理者が設定されていない可能性があります。設定して再試行するのが良いでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/4b71cc5e-4ec5-d9e5-879b-8050bf2263f2.png)

# 4. Synapse ワークスペースの削除
専用 SQL プール (以前の SQL DW) は残したまま、Synapse ワークスペースを削除することができます。

* Synapse ワークスペースの [概要] の [削除] をクリックし、ワークスペースの名前を入力して削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/d6fff4ac-691e-fe6b-e8c5-9a9fcd743d22.png)

* 削除が完了するとリソース グループから Synapse ワークスペースが無くなっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/305fc1ad-ed17-1ce1-7c77-f81c6a56e55d.png)

* Synapse ワークスペース削除後も専用 SQL プール (以前の SQL DW) のクエリ エディターなどからクエリを実行できています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/43718d87-d5e4-acd9-2f2f-39934e50ab65.png)

以上です。