適用対象: SQL Server 2025 (17.x) 以降のバージョン
SQL Server 2025 (17.x) 以降では、 マネージド ID を 使用して次の Azure リソースにアクセスできます。
- Azure Blob Storage
- Azure Data Lake
[前提条件]
-
SQL Server 2025 (17.x)
Azure Arc によって有効になっている SQL Server、またはAzure VM 上の SQL Server に対して Microsoft Entra 認証を有効にする
allow server scoped db credentialsサーバー構成オプションを有効にします。マネージド ID に Azure Blob Storage リソースへのアクセス権を付与します。
Azure VM 上の SQL Server の場合
必要な手順を完了したら、2 つの新しいレジストリ エントリを追加します。 これらのレジストリ エントリは、Azure Virtual Machines 上の SQL Server に対してのみ必要です。 Azure Arc によって有効になっている SQL Server インスタンスの場合、これらのエントリは自動的に作成されます。
レジストリで、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\FederatedAuthentication サブキーを更新します。
注意事項
レジストリを誤って編集すると、システムが深刻な損傷を受ける可能性があります。 レジストリを変更する前に、コンピューター上のすべての重要なデータをバックアップしてください。
次のエントリを作成します。
| エントリ | 価値 |
|---|---|
AADAzureStorageEndPoint |
storage.azure.com |
AADDataLakeEndPoint |
datalake.azure.net |
データベース範囲の資格情報を作成する
マネージド ID のデータベース スコープ資格情報を追加します。
サーバースコープのデータベース資格情報を有効にします。 次の Transact-SQL クエリを実行します。
EXECUTE sp_configure 'allow server scoped db credentials', 1; GO RECONFIGURE;データベース スコープ資格情報を作成します。 この例では、
managed_id名前を使用します。CREATE DATABASE SCOPED CREDENTIAL [managed_id] WITH IDENTITY = 'Managed Identity';
外部データ ソースを作成する
次の設定で外部データ ソースを作成します。
コネクタの場所のプレフィックス
abs
ロケーションパス
-
abs://<container_name>@<storage_account_name>.blob.core.windows.net/、または abs://<storage_account_name>.blob.core.windows.net/<container_name>
-
製品またはサービスによってサポートされる場所
- Azure Arc で有効になっている SQL Server 2025 (17.x)
- SQL Server 2022 (16.x): 階層型名前空間がサポートされています
認証
- Shared Access Signature (SAS)、または
- マネージド ID
Azure Blob Storage の Parquet ファイルに対してクエリを実行する
SQL Server 2025 (17.x) では、Azure Arc を介したマネージド ID がサポートされています。手順については、 Azure Arc で有効になっている SQL Server のマネージド ID に関するページを参照してください。
次の例では、Azure Blob Storage 内の Parquet ファイルに対してクエリを実行します。
EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE;
GO
CREATE DATABASE SCOPED CREDENTIAL [managed_id]
WITH IDENTITY = 'Managed Identity';
CREATE EXTERNAL DATA SOURCE [my_external_data_source]
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = managed_id
);
エラーと解決策
外部テーブルにアクセスできません (エラー 16562)
前提条件がない場合は、Azure Blob Storage または Azure Data Lake にアクセスしようとすると、エラー 16562 が発生する可能性があります。
Msg 16562, Level 16, State 1, Line 79
External table <name> is not accessible because location does not exist or it is used by another process.
次の項目を確認します。
SQL Server インスタンスは、Azure Arc 用に適切に構成されています。詳細については、「 Azure Arc で有効になっている SQL Server のマネージド ID」を参照してください。
必要なレジストリ エントリが存在します。
allow server scoped db credentialsサーバー構成オプションが有効になっています。
ファイルを開けません (エラー 13822)
マネージド ID にストレージ アカウントに対するアクセス許可がない場合、またはストレージへのネットワーク アクセスがブロックされている場合、Azure Blob Storage または Azure Data Lake にアクセスすると、エラー 13822 が発生する可能性があります。
Msg 13822, Level 16, State 1, Line 9
File <file> cannot be opened because it does not exist or it is used by another process.
次の項目を確認します。
- マネージド ID にはストレージ コンテナーへのアクセス許可がありますか?
- マネージド ID は SQL Server の外部のストレージ コンテナーにアクセスできますか?
- ファイルは排他的にロックされていますか?