AZURE

StorageAccountQuotaExceeded - Storage Account Quota Exceeded: Subscription Limit Reached

StorageAccountQuotaExceeded hits when you've maxed out storage accounts in your subscription per region—default is 250, but Pay-As-You-Go vs Enterprise Agreement subscriptions have different caps. ARM throws this 403 client-side error after counting your existing accounts and blocking creation. The limit applies per region, so you might have headroom elsewhere. Most common when spinning up storage for VM disk backups, but also surfaces in AKS container registries, Azure SQL backup storage, and App Service application files.

#Common Causes

  • Regional Quota Limit: You've created the maximum number of storage accounts allowed in the specified region (default 250 per subscription per region). The limit varies by subscription type (Pay-As-You-Go, Enterprise Agreement, etc.). This is persistent—you must delete accounts or request a quota increase.
  • Subscription-Level Quota: The total count of storage accounts across all regions has reached your subscription's limit. Some subscription types have different overall limits in addition to regional limits. This is persistent—you must delete accounts or request a quota increase.
  • Account Type Restrictions: Certain storage account types (e.g., premium storage) may have lower quotas than standard accounts. The quota limit depends on the SKU you're trying to create. This is persistent—you must use a different SKU or request a quota increase.

Solutions

  1. 1Step 1: Diagnose - Check current storage account count in the target region: az storage account list --query "[?location=='<region>'].{Name:name,ResourceGroup:resourceGroup}" --output table Count the results to see how close you are to the limit.
  2. 2Step 2: Diagnose - List all storage accounts across all regions: az storage account list --query "[].{Name:name,ResourceGroup:resourceGroup,Location:location}" --output table Identify unused accounts that can be deleted.
  3. 3Step 3: Fix - Delete unused storage accounts to free quota. Use the code example below to identify candidates for deletion.
  4. 4Step 4: Fix - Request quota increase through Azure Portal: Subscription > Usage + quotas, find "Storage accounts" quota, click "Request increase", and submit a support request. Approval typically takes 1-2 business days (not guaranteed).
  5. 5Step 5: Fix - Consider consolidating storage accounts by using multiple containers within fewer accounts instead of creating many accounts.
  6. 6Step 6: Verify - After deleting accounts or getting quota approval, retry storage account creation. It should succeed with HTTP 201 instead of 403.

</>Code Examples

Storage Account Quota Usage Diagnosis
1# This script helps diagnose StorageAccountQuotaExceeded by checking quota usage
2
3# Step 1: Set target region (replace with your region)
4TARGET_REGION="eastus"
5echo "Checking storage account quota for region: ${TARGET_REGION}"
6
7# Step 2: Count storage accounts in the target region
8STORAGE_COUNT=$(az storage account list \
9  --query "length([?location=='${TARGET_REGION}'])" \
10  --output tsv)
11echo "Storage accounts in ${TARGET_REGION}: ${STORAGE_COUNT}"
12
13# Step 3: Default limit (may vary by subscription type)
14DEFAULT_LIMIT=250
15echo "Default limit per region: ${DEFAULT_LIMIT}"
16
17# Step 4: Check if approaching or at limit
18if [ ${STORAGE_COUNT} -ge ${DEFAULT_LIMIT} ]; then
19  echo "WARNING: At or exceeding storage account limit"
20  echo "Current: ${STORAGE_COUNT}, Limit: ${DEFAULT_LIMIT}"
21else
22  REMAINING=$((DEFAULT_LIMIT - STORAGE_COUNT))
23  echo "Remaining quota: ${REMAINING} storage accounts"
24fi
25
26# Step 5: List all storage accounts in the region
27echo "Listing all storage accounts in ${TARGET_REGION}..."
28az storage account list \
29  --query "[?location=='${TARGET_REGION}'].{Name:name,ResourceGroup:resourceGroup,Location:location,SKU:sku.name}" \
30  --output table
31
32# Step 6: Find potentially unused storage accounts (no recent activity indicators)
33echo "Finding potentially unused storage accounts..."
34az storage account list \
35  --query "[?location=='${TARGET_REGION}'].{Name:name,ResourceGroup:resourceGroup,LastModified:properties.lastGeoFailoverTime}" \
36  --output table
37
38# Step 7: Count storage accounts across all regions
39TOTAL_COUNT=$(az storage account list --query "length(@)" --output tsv)
40echo "Total storage accounts across all regions: ${TOTAL_COUNT}"
41
42# Step 8: List storage accounts by SKU type
43echo "Storage accounts by SKU type:"
44az storage account list \
45  --query "[?location=='${TARGET_REGION}'].sku.name" \
46  --output tsv | sort | uniq -c
47
48# Step 9: Instructions for quota increase
49echo ""
50echo "To request quota increase:"
51echo "  1. Go to Azure Portal > Subscription > Usage + quotas"
52echo "  2. Find 'Storage accounts' quota"
53echo "  3. Click 'Request increase'"
54echo "  4. Fill out the support request"
55echo "  5. Approval typically takes 1-2 business days"

Related Errors

Provider Information

This error code is specific to AZURE services. For more information, refer to the official AZURE documentation.

StorageAccountQuotaExceeded - Storage Account Quota Exceeded: Subscription Limit Reached | AZURE Error Reference | Error Code Reference