本記事は セゾンテクノロジー 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の方を有効にすることに注意してください
BLOBに権限追加
- BLOBのIAMより[ストレージBLOBデータ閲覧者]を選択します
- 先ほど有効にしたSQL ServerのシステムマネージドIDを選択して権限を付与します
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'
);
以上です


