Synapse managed VNet not receiving private endpoint approval state new MPEs stuck "Pending" for days while target shows "Approved"; sibling workspace works

Rushil Shetty 0 Reputation points
2026-09-14T09:59:35.5+00:00

Summary

On one Synapse workspace (PRD, managed VNet enabled), every managed private endpoint created since 11 Sep 2026 reaches provisioningState: Succeeded but connectionState.status stays Pending indefinitely (now 3+ days), even though the target storage account shows the connection as Approved. Traffic does not flow. A sibling workspace in the same tenant approves against the same target without issue.

Per the Private Link pending-approval troubleshooting guide (Step 2 table), target = Approved / consumer = Pending after several minutes is classified as a control-plane inconsistency requiring a support request. Posting here first in case the product group has seen this pattern.

Environment

  • Synapse workspace with managed virtual network (default), West Europe
  • Target: Azure Storage (StorageV2, HNS enabled), sub-resource file, different subscription, same tenant
  • MPEs created via az synapse managed-private-endpoints create and via Synapse Studio is identical result
  • Connection approved via portal and via az network private-endpoint-connection approve is identical result

Repro (two targets, one control)

Workspace Target Synapse connectionState Storage-side connection
Case 1 WS-A (PRD) Storage account X, file Pending (3+ days) Approved, provisioningState: Succeeded
-------- -------- -------- -------- --------
Case 1 WS-A (PRD) Storage account X, file Pending (3+ days) Approved, provisioningState: Succeeded
Case 2 WS-A (PRD) Storage account Y, file Pending (hours) Approved
Control WS-B (PRD, same tenant) Storage account Y, file Approved Approved
  • Storage accounts X and Y are in the same resource group and subscription, same configuration (StorageV2, HNS on, defaultAction: Allow, publicNetworkAccess not restricted).
  • WS-A has 7 pre-existing MPEs (storage dfs, Key Vault, Synapse SQL): all Approved, all created before 11 Sep. Only MPEs created since then are affected.
  • ~90 MPEs across 9 other workspaces in the tenant are all Approved.

Evidence the PE object itself is stuck

Attempting to create a second MPE from WS-A to storage account X returns:

409 PrivateEndpointAlreadyExists: Private endpoint already exists in the vnet
/subscriptions/<microsoft-owned-sub>/resourceGroups/vnet-<id>-WestEurope-<n>-rg/providers/Microsoft.Network/virtualNetworks/vnet-<id>-WestEurope-<n>
with PEReferenceName <mpe-name> and status Creating.

So the NRP-side private endpoint in the managed VNet has a private IP allocated (visible in Studio) but never transitions out of Creating, which is consistent with it not being able to receive the approval state.

properties.privateEndpoint.id on the storage-side connection matches properties.resourceId on the Synapse MPE exactly the objects are correctly linked.

Already ruled out

  • Locks on target: a ReadOnly lock was present on storage account X on 11 Sep and caused the very first MPE attempt to fail with ScopeLocked on privateEndpointConnectionProxies/validate/action. Lock was removed (now CanNotDelete only). Storage account Y never had a ReadOnly lock and shows the same symptom.
  • Azure Policy: no Deny-effect policies on the target scope; activity log on both storage accounts shows zero failed operations since 11 Sep 09:30 UTC no RequestDisallowedByPolicy, no ScopeLocked.
  • RBAC: approver has Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action; approve returns 200 with status: Approved.
  • Approval timing: approved only after Synapse reported provisioningState: Succeeded.
  • Delete / recreate: MPE and storage-side connection deleted and recreated twice (waited for both sides to list empty in between). Same result each time.
  • Reject → re-approve: Storage RP treats Rejected as terminal (InvalidValuesForRequestParameters), so this path is not available.
  • Wait: Case 1 has been Pending for over 72 hours across a weekend. Studio Refresh and repeated CLI show calls do not change it.
  • Name / target / sub-resource: reproduced with two different MPE names and two different target accounts, same sub-resource that works from WS-B.
  • Linked service test connection from the managed VNet IR fails (connection not established), confirming this is not a display issue.

Questions

  1. Is there any customer-side action that forces the managed VNet to re-read connection state from NRP for an existing MPE?
  2. Is there any known condition (e.g. a failed privateEndpointConnectionProxies/validate on the first attempt) that can leave a workspace's managed VNet unable to finalise subsequent PEs, and any way to clear it without a support case?
  3. If this requires backend intervention: which team should a support request be routed to Synapse or Private Link/NRP given the PE object appears stuck on the NRP side but only for this one workspace?

Workspace name, cluster ID, managed VNet resource ID and PE resource IDs are available on request via private message.

Azure Synapse Analytics
Azure Synapse Analytics

An Azure analytics service that brings together data integration, enterprise data warehousing, and big data analytics. Previously known as Azure SQL Data Warehouse.

0 comments No comments

1 answer

Sort by: Most helpful
  1. Allan Solomon Mejia 8,420 Reputation points
    2026-09-14T20:08:25.4466667+00:00

    Hello @Rushil Shetty

    If you’re referring to a Managed Private Endpoint created from an Azure Synapse workspace that has Managed VNet enabled, the expected lifecycle is:

    Synapse Managed VNet > Managed Private Endpoint created > Provisioning State = Succeeded > Approval State = Pending > Target resource owner approves > Approval State = Approved

    The connection is created in Pending state, and the owner of the target Private Link resource must approve or reject it. Only an Approved managed private endpoint can carry traffic.

    So if Synapse Studio shows the managed private endpoint as created successfully but you don’t see a corresponding approval request on the target resource, check the following:

    1. Confirm the workspace actually has a Managed workspace Virtual Network. Managed private endpoints are only supported when Managed VNet is enabled.
    2. Confirm the Private Link Resource ID and groupId are correct for the target service.
    3. On the target resource, open Networking / Private endpoint connections and look for the pending connection.
    4. If the target is in another subscription or tenant, verify you have the required permissions on that target resource and that cross-tenant configuration is allowed.
    5. If approval fails or the Approve button is missing, verify the approver has the target service’s privateEndpointConnectionsApproval/action permission. Microsoft’s current Private Link troubleshooting guidance specifically calls out missing approval permissions as a common reason managed-service private endpoints remain stuck or can’t be approved.

    Also note that managed-service private endpoints such as those created by Synapse do not auto-approve simply because the source and target are in the same subscription. Microsoft specifically calls managed Azure services such as Azure Synapse out as requiring approval.

    You can also verify the Synapse-side object from CLI:

    az synapse managed-private-endpoints list \
      --workspace-name <workspace-name>
    

    or inspect a specific endpoint:

    az synapse managed-private-endpoints show \
      --workspace-name <workspace-name> \
      --pe-name <endpoint-name>
    

    These commands are the supported CLI operations for Synapse managed private endpoints.

    If the Synapse endpoint shows provisioningState: Succeeded but the target resource has no pending private endpoint connection, that would be the interesting failure condition. In that case, capture the managed private endpoint JSON, target resource ID, groupId, exact UTC creation time, and Activity Log entries from both source and target subscriptions, then raise it with Azure Support because the Synapse control plane appears to have created the consumer-side object without successfully creating the corresponding target-side connection request.

    References:

    Managed private endpoints in Azure Synapse Analytics

    Create a managed private endpoint in Synapse

    Managed virtual network in Azure Synapse

    Azure CLI - Synapse managed private endpoints


    Help make this community better for everyone: If this answer helped or resolved your issue, please accept it or upvote it. If not, share more details in a comment so we can continue the discussion and find the right solution. Thank you.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.