次の方法で共有


PolyBase からマネージド ID を使用して Azure Storage に接続する

適用対象: 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 のデータベース スコープ資格情報を追加します。

  1. サーバースコープのデータベース資格情報を有効にします。 次の Transact-SQL クエリを実行します。

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. データベース スコープ資格情報を作成します。 この例では、 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 の外部のストレージ コンテナーにアクセスできますか?
  • ファイルは排他的にロックされていますか?