🛠️ Field Questions — Real Customer Scenarios¶ Reference
Detailed answers to questions raised by customers evaluating Fabric for production
Last Updated: 2026-05-21 | Version: 1.0.0
This page collects detailed answers to specific questions raised during enterprise Fabric adoption — scenarios that the standard product docs don't address directly but that come up repeatedly in field engagements. Each topic links back to the authoritative Microsoft Learn citation.
Third-party references — publicly sourced, good-faith comparison
This page references non-Microsoft products and services. That information is drawn from each vendor's publicly available documentation and is offered for honest, good-faith comparison only. This is a personal project written from a Microsoft Fabric and Azure perspective; it does not claim expertise in, or authority over, any third-party product, and nothing here is an official statement by, or endorsed by, those vendors. Capabilities, pricing, and features change often — always verify against the vendor's current official documentation. Where a third-party offering is the stronger choice, we say so plainly.
1. Power BI Mashup Errors with Mixed VNet + Cloud Sources¶
Scenario. Combining data from Azure Databricks (on a corporate VNet) with cloud data sources such as SharePoint Lists causes the Power BI semantic model refresh to fail. The mashup engine appears to be routing the cloud source through the VNet.
Why this happens¶
This is the Power Query Formula.Firewall ("privacy levels which cannot be used together") error. Power Query partitions every data source by privacy level and refuses to evaluate a single mashup that joins partitions it can't isolate.
In the Power BI Service the constraint is stricter still: if any source in a semantic model requires a gateway (VNet data gateway in your case), the service forces the cloud source through the same gateway too — and a single semantic model can use only one gateway connection. SharePoint List → Databricks-on-VNet hits this directly.
To make the cross-source mashup work without changing architecture, you must:
- Set both sources to Organizational privacy level (Service and Desktop), AND
- Define the cloud source on the same VNet data gateway, AND
- Enable "Allow user's cloud data sources to refresh through this gateway cluster" on the gateway.
Source: Data refresh — Accessing on-premises and cloud sources in the same source query · Merge or append on-premises and cloud data sources.
Does mirroring Databricks via VNet to Fabric eliminate the mashup issue?¶
Yes — in practice. Once Azure Databricks is mirrored into a Fabric workspace (through a VNet data gateway), Power BI no longer reads Databricks as a "VNet source" inside the semantic model. The model reads the mirrored Delta tables from OneLake via Direct Lake — which is a Fabric/OneLake source, not a VNet source. SharePoint can then be joined as a normal cloud source without triggering the firewall.
Mirroring for Azure Databricks specifically uses a VNet data gateway (not Fabric's managed private endpoints — those are a separate path for Spark egress). For Databricks behind a private endpoint, follow the dedicated mirroring + private-endpoint guide.
Source: Connect to Azure Databricks workspaces behind a private endpoint · Mirroring Azure Databricks Unity Catalog — Direct Lake.
Does the Fabric workspace need its own Fabric VNet if the Databricks connection is already VNet-private?¶
No — not for mirroring. Mirroring uses the VNet data gateway path. Fabric's managed VNet + managed private endpoints are required only for Fabric Data Engineering (Spark) workloads that need to egress to private resources directly from the workspace.
If your only private source in this workspace is Databricks → ADLS via mirroring + VNet gateway, you do not need to assign a managed VNet to the workspace. You would need it if a notebook in the same workspace later needs to reach the same Databricks/ADLS privately (independent of mirroring).
Source: Managed private endpoints overview — limitations.
Recommended pattern¶
[Azure Databricks (corporate VNet)]
│
│ Mirroring via VNet data gateway
▼
[Fabric workspace · Mirrored DB item]
│
│ Direct Lake (OneLake)
▼
[Power BI semantic model]
▲
│ Cloud source — no gateway needed
[SharePoint List / cloud data]
The semantic model now combines two OneLake/Fabric-native sources from its own perspective, so the Formula.Firewall path is irrelevant.
2. Creating Views on Mirrored Databricks Tables¶
Scenario. EDW group uses a two-step Databricks pattern: a
Cleanedcatalog of tables, plus aReplicascatalog of Views that filtercurrent_record = trueand that Analytics consumes. Can the View pattern carry over to Fabric mirroring?
Can you create SQL Views on mirrored Databricks tables?¶
Yes. Every mirrored Azure Databricks item gets an auto-generated SQL Analytics Endpoint that supports T-SQL CREATE VIEW, inline TVFs, stored procedures, and security policies over the Delta tables.
The endpoint label "read-only" refers to data manipulation (no INSERT / UPDATE / DELETE on the mirrored tables themselves). Metadata DDL for views, TVFs, stored procedures, and permissions is explicitly supported — and is documented consistently across every mirroring source (Azure SQL, SQL Server, PostgreSQL, Oracle, Open Mirroring, Databricks).
So your Replicas view pattern translates one-for-one. Create:
Source: Mirroring Azure Databricks — Built-in analytics experiences · Explore data in your mirrored database · SQL analytics endpoint limitations.
Where does the transformation belong?¶
In order of recommendation:
| Option | Pros | Cons |
|---|---|---|
| (A) View on the mirror's SQL analytics endpoint | Zero extra storage, no second copy, Direct Lake / SQL consumers see filtered data, fastest to deploy | View executes at query time; complex multi-table joins can degrade Direct Lake to DirectQuery fallback |
(B) View in a Fabric Warehouse using three-part naming MirroredDB.schema.table | Full DDL/DML, more performant for complex joins, security policies + RLS, materializable | Workspace-scoped — Warehouse and mirror must live in the same Fabric workspace |
| (C) Notebook materialization to a Lakehouse table | Best perf for very heavy aggregations / window functions | Second copy of data, extra orchestration, no longer "live" |
| (D) Push back to Databricks as a filtered table | Keeps single source of truth in Databricks | Couples semantic layer to upstream platform; loses the "mirror once, transform downstream" benefit |
For the current_record = true use case specifically, option (A) is the right default — it's a simple WHERE clause, no perf penalty, and it lets you stop maintaining the Replicas catalog in Databricks.
Source: Query the warehouse or SQL analytics endpoint — Write a cross-database query · Develop and deploy cross-warehouse dependencies.
Should you convert mirrored Databricks tables into Lakehouse tables?¶
Usually no. The mirror is incremental and continuously updated. Materializing into a Lakehouse means:
- You now own a refresh schedule (Fabric Pipeline / Notebook) to keep it fresh.
- You lose the near-real-time guarantee of the mirror.
- You double your storage cost for the same logical dataset.
Only do this if (a) you need very heavy aggregations that hurt Direct Lake at query time, (b) you need to mutate the data (e.g., apply additional filtering, deduplication, or business logic that views can't express cleanly), or © you need to blend with other Lakehouse-resident data and prefer a unified storage location.
3. Lakehouse Security and Permissions for Mirrored Databricks¶
Scenario. Customer uses Databricks table-level scripting as a workaround for the lack of "grant all except" functionality. They want to know how the permission model changes once Databricks is mirrored to Fabric.
Are Unity Catalog permissions inherited when mirroring to Fabric?¶
No. Unity Catalog grants are not carried over. Microsoft documents this explicitly: "Unity Catalog policies and permissions aren't mirrored in Fabric. ... You need to use Fabric's permission model to set access control on objects in Fabric."
A single connection credential is used to mirror Unity Catalog. Once the data is in Fabric, downstream consumers query through that connection — Unity Catalog row/column/ABAC policies do not apply to Fabric reads.
A preview pattern called OneLake Security mapping lets you sync an Entra group via Databricks Automatic Identity Management, grant it UC privileges, and then assign the same Entra group a OneLake Data Access Role in Fabric. That is a parallel re-grant, not inheritance.
Source: Secure Fabric mirrored databases from Azure Databricks · Tutorial: Enable OneLake Security.
Three control planes to keep distinct¶
| Control plane | Scope | How managed | Inherits from UC? |
|---|---|---|---|
| Fabric workspace roles | Workspace-wide (Admin / Member / Contributor / Viewer) | Fabric portal · Entra groups | No |
| Item permissions / Share | Per mirrored database item (Read · ReadData · ReadAll · Write) | Share dialog · Entra groups | No |
| SQL endpoint T-SQL | Schema / object / column / row inside the SQL analytics endpoint | GRANT / DENY / CREATE SECURITY POLICY | No (re-apply) |
A user needs (workspace role OR item Read) AND sufficient SQL grants to return rows. Unity Catalog is a fourth, fully separate control plane that does not flow through.
Does the endpoint support standard T-SQL grant/deny patterns?¶
Yes. The SQL analytics endpoint over a mirrored database supports the standard SQL Server securable hierarchy via GRANT / REVOKE / DENY, plus RLS and CLS:
-- Grant whole schema
GRANT SELECT ON SCHEMA::abc TO [Analytics-Readers];
-- Deny a specific object
DENY SELECT ON OBJECT::dbo.xyz_pii TO [Analytics-Readers];
-- Column-level
GRANT SELECT ON dbo.customer (id, name, region) TO [Analytics-Readers];
-- Row-level via security policy
CREATE SECURITY POLICY rls.region_filter
ADD FILTER PREDICATE rls.fn_region([region]) ON dbo.customer
WITH (STATE = ON);
Caveats:
CREATE USERisn't invoked explicitly — the user is created the first time youGRANT/DENYagainst it.- The user must additionally have Read on the item (or a workspace role) to connect.
- RLS / CLS apply to T-SQL queries. Direct Lake falls back to DirectQuery to honor RLS, so plan for the perf delta.
- Grants must be re-applied on the SQL analytics endpoint even if defined on the source — they do not migrate via deployment pipelines.
Source: SQL granular permissions in Fabric · Row-level security in Fabric.
Are Entra ID groups supported?¶
Yes — at every layer.
- Workspace roles: Microsoft 365 groups, security groups, and distribution lists are all accepted. Nested groups are honored.
- Item permissions / Share: Entra groups accepted; permission propagation can lag up to two hours.
- SQL endpoint T-SQL:
GRANT/DENYaccept Entra groups directly:
Source: Roles in workspaces in Microsoft Fabric · Fabric Data Warehouse security.
Which group owns the mirrored Databricks workspace — EDW or Analytics?¶
EDW (data platform team). Microsoft's adoption guidance calls the mirrored database a "data product"; ownership goes to whoever owns the upstream source. The Analytics team gets a separate consumption workspace (Power BI semantic models, reports, paginated reports).
Use Fabric Domains to group both workspaces under a single business domain so the Analytics team gets discoverability without ownership.
Important caveat: shared recipients access using the item owner's identity in delegated mode — if the EDW owner is removed from the workspace, downstream Analytics consumers lose access. Set the owner to a service principal or Workspace Identity, not an individual.
Source: Fabric adoption roadmap — Content ownership and management · Domains best practices · Share warehouse — manage permissions.
How does UAT work when only PROD is mirrored?¶
Microsoft's recommended pattern is mirror once, share everywhere — but that doesn't mean "only mirror PROD." For Fabric-side validation:
- Upstream Databricks maintains separate UAT and PROD Unity Catalogs (the real data isolation lives upstream).
- In Fabric, mirror each Databricks environment once into a dedicated mirroring workspace (
mirror-databricks-uat,mirror-databricks-prod). - Downstream consumer Fabric workspaces (semantic models, reports) are promoted UAT → PROD via Deployment Pipelines, with Data Source rules re-pointing them at the appropriate mirror.
Mirroring is excluded from Deployment Pipeline content promotion (only the item definition is captured in Git; the SQL endpoint and views are not). You must manually start the mirror after deploying to a new environment.
If you mirror only PROD, your UAT consumers can't validate the same query path (SQL endpoint behavior, RLS, view definitions, semantic-model framing) that PROD will use — explicitly mirror UAT too if your release gate requires it.
Source: CI/CD for mirrored databases in Fabric · Fabric deployment patterns.
4. Fabric Workspace Setup for Analytics on Mirrored Databricks¶
Scenario. Analytics group wants to maintain its own Lakehouse to blend Databricks data with non-core systems, then use Direct Lake for reporting.
What can / can't you do against a mirrored Databricks database?¶
| Capability | Status | Notes |
|---|---|---|
| Query mirrored tables via T-SQL on the SQL analytics endpoint | ✅ Read-only | No INSERT / UPDATE / DELETE / MERGE on mirrored tables |
CREATE VIEW / inline TVFs / stored procedures | ✅ Supported | See Topic 2 |
GRANT / DENY / RLS / CLS | ✅ Supported | See Topic 3 |
| Save / share queries in SQL editor | ✅ Supported | Saved queries persist; SSMS + mssql VS Code extension supported |
Cross-database queries (MirrorDB.schema.table in a Warehouse) | ✅ Supported | Same workspace only |
PySpark notebook read via FQN workspace.mirrorDB.schema.table | ✅ Supported | Requires schema-enabled lakehouse attached, or no lakehouse |
| PySpark notebook write back to mirror | ❌ Not supported | Mirror is read-only; write to a Lakehouse instead |
| Direct Lake on SQL endpoint | ✅ GA | Fallback to DirectQuery on RLS / views / capacity guardrails |
| Direct Lake on OneLake (composite-capable) | ✅ GA | No DirectQuery fallback; supports composite models |
Source: Limitations: Fabric mirrored databases from Azure Databricks · Query mirrored databases in Spark notebooks.
Can a single semantic model combine Direct Lake against both a mirror and a Lakehouse?¶
Yes — but only with Direct Lake on OneLake.
| Mode | Composite Direct Lake (mirror + lakehouse) | Notes |
|---|---|---|
| Direct Lake on SQL | ❌ No | Single data source only |
| Direct Lake on OneLake | ✅ Yes | Mix tables from lakehouses, warehouses, SQL DBs, mirrored DBs; can also add Import-mode tables from any Power Query connector |
Direct Lake on OneLake reads Delta files directly from OneLake (the mirror lands in OneLake), bypassing the SQL endpoint for data load. For the Analytics team's use case — blending Databricks-mirrored tables with non-core sources — Direct Lake on OneLake is the right model.
Source: Direct Lake overview — Comparison of storage modes · Direct Lake on Power BI Desktop.
Do customers typically run Warehouse / Lakehouse and Reports in separate workspaces?¶
Yes — this is Microsoft's documented "data workspace vs reporting workspace" pattern, often layered under a Fabric Domain. The Power BI implementation planning guide recommends separating:
- Data workspace — lakehouses, warehouses, SQL DBs, pipelines, dataflows, semantic models (the data product)
- Reporting workspace — reports, dashboards, metrics (the consumption layer)
For multi-medallion teams, this can further split into Bronze workspace, Silver/Gold workspace, and Reports workspace per data product, with OneLake shortcuts as the cross-workspace glue.
Source: Power BI implementation planning — Workspace-level planning · Fabric deployment patterns.
Can a report's semantic model in Workspace A query a mirrored Databricks in Workspace B?¶
Yes — this is the standard Direct Lake pattern.
Hard constraints:
- Region: model and source must live in the same region. Workaround: create a Lakehouse in the model's region and shortcut to the cross-region source.
- Permissions the binding identity (see service-account section below) must have:
- Read on the mirrored DB item in Workspace B
- ReadData (Direct Lake on SQL) or ReadAll / OneLake Security role (Direct Lake on OneLake)
- Semantic-model owner must also have read access — framing is checked against the owner, not the runtime user.
- If Workspace Outbound Access Protection (preview) is enabled, you must add explicit exception rules (SQL FQDN or OneLake URL).
Source: Direct Lake security integration · Workspace outbound access protection for semantic models.
Does this require a service account?¶
Either SSO or a fixed identity works — but a fixed identity is the recommended pattern for cross-workspace and embedded scenarios.
| Auth mode | When to use | Caveat |
|---|---|---|
| SSO (default) | Interactive reports where every consumer has source access | Consumers must have Read + ReadData on the mirror; breaks for embed and for users without source grants |
| Service Principal | XMLA refresh, automation, deployment pipelines | Workspace SPN must be enabled at tenant + capacity; SPN profiles are NOT supported for Direct Lake |
| Workspace Identity | Cross-workspace Direct Lake, isolated consumer workspaces | GA in April 2026 wave; recommended over individual SPNs for new builds |
For the Analytics team's scenario (their own workspace consuming the EDW team's mirror), the recommended pattern is:
- EDW team creates a Workspace Identity for the mirror workspace.
- Workspace Identity is granted Read + ReadData on the mirror.
- Analytics team's semantic model is bound to a connection using SSO disabled, fixed identity = Workspace Identity.
- Report consumers need only Read on the semantic model, not the mirror.
Source: Direct Lake security integration · Service principals for Fabric · Workspace identity.
5. SharePoint, Fabric SQL Database, and DataFlow Gen2¶
SharePoint Shortcut + automatic DataFlow Gen2 / Pipeline trigger¶
Scenario. Files land in a Lakehouse via OneLake Shortcut to a SharePoint Document Library. Want: user uploads file → DataFlow processes it → output as clean CSV / XLSX returned to user.
OneLake events do NOT fire on shortcut targets. The OneLake event grid (Microsoft.Fabric.OneLake.FileCreated) only fires when files are written to OneLake-native storage (Files/Tables in a Lakehouse). Shortcuts are pointers — the file is still written to the SharePoint store, so no OneLake event is emitted.
Supported alternatives, in order of preference:
- Power Automate SharePoint trigger → Fabric Pipeline REST API. "When a file is created (properties only)" SharePoint trigger → HTTP action calling
POST /v1/workspaces/{ws}/items/{pipelineId}/jobs/instances?jobType=Pipelinewith a file-path parameter. This is the canonical Microsoft pattern. - Scheduled Fabric Pipeline that scans the shortcut folder via
Get Metadata→ForEach→ parameterizedCopy/Dataflow. Simplest fallback; latency = the schedule interval. - Activator + OneLake events is viable only if you first copy the file from the SharePoint shortcut into a native OneLake folder — which then emits FileCreated events.
For the self-service file processing pattern:
[User uploads file to SharePoint]
│
│ Power Automate SharePoint trigger
▼
[Power Automate flow]
│
│ HTTP POST → Fabric Pipeline REST API (runOnDemand)
▼
[Fabric Pipeline: Copy + Dataflow Gen2 transformation]
│
│ Output as CSV/XLSX
▼
[SharePoint Document Library or OneDrive — via SharePoint connector "Create file"]
Caveats:
- SharePoint triggers in Power Automate do not fire on subfolders — create multiple flows or use the parent library.
- Power Automate's per-flow license matters at volume (Pay-as-you-go vs per-user plans).
Source: OneLake events · Build event-driven data pipelines · SharePoint connector triggers in Power Automate · Fabric Pipeline REST API.
Fabric SQL Database — ingestion best practices¶
Fabric SQL Database (distinct from Fabric Data Warehouse) has a narrower ingestion surface than Azure SQL DB. Defaults:
- Connection: TDS over TCP port 1433 only. Open this on your gateway / firewall.
- Authentication: Microsoft Entra ID only — no SQL logins, no Windows auth. Use a service principal for automation.
- Recovery model: Full only. No minimal logging in bulk import.
- CDC: Not available — use Fabric Mirroring to OneLake instead (auto-enabled for Fabric SQL DB).
- Encryption: System-managed TDE only. Customer-managed keys (CMK) are not supported.
Recommended ingestion patterns:
| Pattern | Supported? | Notes |
|---|---|---|
OPENROWSET(BULK ...) from OneLake / ADLS / S3 / GCS via shortcuts | ✅ Yes (preview) | The primary bulk-load path |
| Fabric Pipeline Copy activity (via TDS) | ✅ Yes | Use this for orchestrated loads |
| DataFlow Gen2 to Fabric SQL DB destination | ✅ Yes | Schema-on-write; see destination guidance |
| Pre-stage 100 MB – 1 GB files for parallelism | ✅ Recommended | Inherits Warehouse file-size guidance |
Source: Fabric SQL Database limitations · Data virtualization in Fabric SQL Database (OPENROWSET).
Ingestion patterns that are NOT supported in Fabric SQL Database¶
| Pattern | Status | Replacement |
|---|---|---|
Native BULK INSERT from file path | ❌ Not supported | Use OPENROWSET(BULK) from OneLake |
Legacy OPENROWSET (non-BULK) | ❌ Not supported | Only the BULK function is supported |
COPY INTO (T-SQL statement) | ❌ Not supported | This is Warehouse-only; do not confuse |
| SQL Server transactional / snapshot / merge replication | ❌ Not supported | Use Mirroring (replaces CDC + replication) |
| CDC (Change Data Capture) | ❌ Not supported | Mirroring is auto-enabled for Fabric SQL DB |
| MS DTC / distributed transactions | ❌ Not supported | Re-architect to local transactions |
BACKUP / RESTORE | ❌ Not supported | System-managed backups only |
| Customer-managed keys / TDE custom | ❌ Not supported | System-managed TDE only |
| SSIS direct write (OLE DB destination) | ⚠️ Works through TDS but not optimized; no minimal logging | Prefer Fabric Pipeline / DataFlow Gen2 |
| Linked servers (as source) | ❌ Not supported | Linked-server target is allowed |
For ODBC bulk-load drivers, the most common errors are caused by:
- TDS version mismatch — Fabric SQL DB requires modern TDS (8.0+). Older drivers will negotiate down and fail. Update the driver to ODBC Driver 18 for SQL Server (17.x is too old for some scenarios).
- Port 1433 blocked — verify outbound 1433 on the gateway / proxy / corporate firewall.
- SQL login fallback — ODBC drivers default to SQL auth; force
Authentication=ActiveDirectoryServicePrincipalorActiveDirectoryInteractivein the connection string.
Source: Fabric SQL Database limitations · OPENROWSET BULK in Fabric SQL DB.
DataFlow Gen2 unable to select a Lakehouse destination when reading via Power BI gateway¶
This is a documented limitation, not a bug.
Root cause: DataFlow Gen2 staging uses TDS over TCP 1433 to read from its internal staging Lakehouse. On-prem gateways and corporate proxies frequently:
- Block outbound 1433 (only allow HTTPS/443).
- Only proxy generic HTTP/TLS (not TDS).
When a gateway-bound dataflow has multiple queries that reference each other, the second query can't read staged results from the staging Lakehouse over 1433 → WriteToDatabaseTableFrom_* error.
Additional constraints:
- Gateway version: minimum 3000.270 (May 2025) for incremental refresh
- Lakehouse destination; 3000.290+ for "Navigate using full hierarchy" schema support.
- Lakehouse destination does not support spaces or special characters in column / table names, and does not support
DurationorBinarycolumns.
Documented workarounds (in order of robustness):
- Open outbound TCP 1433 from the gateway server to Fabric SQL endpoints. The proxy must support TDS, not just HTTP.
- Single-query design — write directly to Lakehouse, do not reference staged queries. Disable Fast Copy.
- Stage to ADLS Gen2 first: a Fabric Pipeline
Copyactivity reads from the gateway → writes to ADLS Gen2, then a cloud-only DataFlow Gen2 or Pipeline loads ADLS Gen2 → Lakehouse. This is the most robust enterprise pattern when the gateway environment can't open TCP 1433. - Upgrade the gateway to at least 3000.270.
Source: Gateway considerations for DataFlow Gen2 destinations · DataFlow Gen2 limitations · DataFlow Gen2 incremental refresh limitations · Lakehouse connector for DataFlow Gen2.
📚 Related Documentation¶
- Mirroring — Fabric Mirroring end-to-end
- Direct Lake — connectivity, guardrails, fallback
- Network Security — VNet, private endpoints, managed VNet
- Fabric SQL Database — overview + best practices
- DataFlow Gen2 — destinations, refresh, gateway
- Identity & RBAC Patterns — workspace roles, item permissions, Entra ID groups
- Multi-Tenant Workspace Architecture — production vs UAT, cross-workspace patterns
- Outbound Access Protection — workspace egress controls
If you have a scenario not covered here, file an issue at fgarofalo56/Suppercharge_Microsoft_Fabric/issues and tag it field-question.