適用対象: 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
-
allow server scoped db credentialsサーバー構成オプションを有効にする - マネージド ID に Azure Blob Storage リソースへのアクセス権を付与します。
データベース範囲の資格情報を作成する
マネージド 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 の外部のストレージ コンテナーにアクセスできますか?
- ファイルは排他的にロックされていますか?