8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IP制限されたBLOBストレージからSQL DatabaseへBULK Insertする

Last updated at Posted at 2025-12-17

本記事は セゾンテクノロジー Advent Calendar 2025 18 日目の記事です。

IP制限されたBLOBストレージに配置したcsvファイルをSQL DatabaseへBULK Insertする必要がありました。
どうにもうまくいかず、色々検証した結果を書き残します。

SASではできない

  • 以下マニュアルで示されているSASでの実行はIP制限を加えたBLOBではサポートされていません

既知の問題

  • SASで実行すると以下エラーメッセージが表示されます
Failed to execute query. Error: Cannot bulk load because the file "xxx" could not be opened. Operating system error code 5(Access is denied.).

SQL ServerシステムマネージドID有効

  • SQL ServerのシステムマネージドIDを有効にします。このときDatabaseではなくServerの方を有効にすることに注意してください

image.png

BLOBに権限追加

  • BLOBのIAMより[ストレージBLOBデータ閲覧者]を選択します

image.png

  • 先ほど有効にしたSQL ServerのシステムマネージドIDを選択して権限を付与します

image.png

BULK Insert実行

  • 以下クエリを実行してBULK Insertが成功することを確認します
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrongPassword1';
GO

CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential2
 WITH IDENTITY = 'MANAGED IDENTITY';


CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage2
WITH ( TYPE = BLOB_STORAGE,
          LOCATION = 'https://[Your Blob Storage Name].blob.core.windows.net/[Your Blob Container Name]'
          , CREDENTIAL= MyAzureBlobStorageCredential2
);

BULK INSERT dbo.test
FROM 'bulk.csv'
WITH (
  DATA_SOURCE = 'MyAzureBlobStorage2',
  FIELDTERMINATOR = ',',
  ROWTERMINATOR = '\n'
);

以上です

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?