SaveMyCert
Log in
5 of 5 free questions left today·for unlimited practice
Monitor and optimize an analytics solution

Identify and Resolve Fabric Errors: Pipelines, Dataflows, Notebooks, and More

13 min readDP-700 · Monitor and optimize an analytics solutionUpdated

You resolve Fabric errors by reading the error message where the item records it — the failed activity's output in a pipeline run, the per-table entry in a Dataflow Gen2 refresh history, the cell output and driver log of a notebook, the result of .show ingestion failures in an Eventhouse, the runtime logs of an Eventstream, the error number returned by a T-SQL statement, and the access or path failure surfaced when a OneLake shortcut is opened — then classifying the failure as authentication, connectivity, schema or data, resource, or logic, and applying the fix that class implies. DP-700 gives this an entire skill area because each item type fails in characteristic ways with its own diagnostic surface. This lesson works through the common failure classes for all seven item types the study guide names, gives you a systematic troubleshooting method, and ends with an error-to-cause-to-fix table you can rehearse before the exam.

What you’ll learn
  • Apply a systematic method to any Fabric failure: locate the run, read the error, classify it, reproduce it at the smallest scope, fix, and rerun
  • Diagnose pipeline activity failures using error details, retry and timeout settings, and rerun from the failed activity
  • Resolve Dataflow Gen2 refresh errors by isolating the failing table and phase — evaluation, staging, or load to destination
  • Troubleshoot notebook failures including Spark exceptions and driver or executor out-of-memory conditions
  • Investigate Eventhouse ingestion failures with KQL management commands and fix Eventstream connectivity and schema errors
  • Recognize common T-SQL and OneLake shortcut errors and their standard resolutions

A systematic troubleshooting method

The method that works across every Fabric item type has six steps, and DP-700 scenarios reward you for following them in order rather than jumping to a fix.

  1. Locate the failing run. Start in the Monitoring hub (for jobs) or the item's own editor (for continuous items like Eventstreams) and find the failed execution.
  2. Read the actual error. Drill to the deepest surface available — the failed activity's error details, the failing table in a refresh, the exception in a cell, the failure record from a KQL command. Never diagnose from the top-level status alone.
  3. Classify the failure. Almost every error falls into one of five classes: authentication (expired credentials, missing permission), connectivity (unreachable source, gateway, firewall), schema or data (type mismatch, missing column, malformed rows), resource (out of memory, capacity throttling, timeout), or logic (bad expression, wrong path, wrong query).
  4. Reproduce at the smallest scope. Preview the failing query on a subset, run the failing cell alone, ingest one file, or execute the T-SQL statement directly. Small reproductions turn a vague run failure into a specific message.
  5. Fix the class, not the symptom. An expired credential needs a connection update, not a retry policy; a type mismatch needs a schema fix, not more memory.
  6. Rerun from the failure point and prevent recurrence. Rerun the pipeline from the failed activity, then add retries for genuinely transient classes and an Activator alert so the next failure is heard immediately.

Keep the classification list in your head — the rest of this lesson is those five classes expressed per item type.

Pipeline errors: activities, retries, and timeouts

A pipeline fails at the activity level, so diagnosis always starts by opening the run and finding the failed activity's error code and message in its output. The run-level status only tells you that some activity on the executed path failed without a recovery path.

The common failure classes map cleanly:

  • Authentication — the connection used by a source or sink has expired or lost permission. The fix is updating the connection's credentials, not editing the pipeline.
  • Connectivity — the source is unreachable, or an on-premises source is used without a healthy data gateway. Verify the gateway status and network path.
  • Schema and data — a Copy activity hits a column mapping mismatch or a value that will not convert to the destination type. Fix the mapping or the destination schema; for recurring dirty data, adjust the copy settings for handling incompatible rows.
  • Resource and transient — throttling from the source, a timeout on a long copy, or a temporary service fault. These are the failures retry policies exist for: each activity has a retry count, retry interval, and timeout. Transient classes deserve retries; deterministic ones (auth, schema) do not — retrying a bad credential three times just fails three times.
  • Logic — a dynamic expression evaluates to a wrong path or parameter. Check the activity input JSON in the run details, which shows the expression after evaluation.

After fixing, use rerun from failed activity so completed upstream work is not repeated. Also recognize the orchestration angle: failures in an invoked child (a notebook or dataflow activity) surface on the parent's activity, and you drill through to the child's own run for the underlying error.

Dataflow Gen2 errors: refresh, staging, and destination failures

A Dataflow Gen2 failure is diagnosed from its refresh history: open the failed refresh and find which table (query) and which activity failed, because a dataflow with many queries usually fails in exactly one of them while the rest succeed.

Classify by phase:

  • Evaluation errors — the mashup engine could not execute the query: a source credential expired, an on-premises source has no reachable gateway, a source column referenced by a step was renamed or removed, or a step produced an error value. Reproduce by opening the query in the dataflow editor, where the failing step is flagged and you can inspect the error on the exact cell or column.
  • Staging errors — dataflows can stage data before loading it; failures here are usually resource-shaped (very large intermediate results) or environmental. If a query does not need staging, disabling staging for it is a legitimate fix as well as an optimization.
  • Load-to-destination errors — the write to the Lakehouse, Warehouse, or other destination failed: a data type in the query does not convert to the destination column type, a schema changed so the fixed column mapping no longer matches, or the writer lacks permission on the destination. Fix the query's types, update the destination mapping, or correct the permission.

Two recurring exam patterns: first, a dataflow that works on demand but fails on schedule is usually an authentication or gateway problem tied to the scheduled context; second, when the error text mentions the destination table rather than the source, stop debugging the query steps — the query evaluated fine, and the mapping or destination schema is the problem.

Notebook errors: Spark exceptions and out-of-memory failures

A notebook fails with an exception in the failing cell's output, and that traceback is your first diagnostic. Read it bottom-up: the last frames name the real cause — an unresolved table or path, a column not found, a schema mismatch on write, a Python or PySpark API misuse.

The failures that need more than the cell output are the resource ones:

  • Driver out-of-memory — the classic cause is pulling distributed data onto the driver: collect() on a large DataFrame, toPandas(), or building huge local objects. The fix is to stop materializing on the driver (write results to a table, aggregate first, or sample), not to blindly enlarge the pool.
  • Executor out-of-memory or lost executors — typically skewed or oversized partitions, or an explosive join. Repartition, fix the skewed key, avoid unnecessary wide shuffles, or scale the Spark pool's node size if the workload legitimately needs it. The Spark UI's stage and task view shows the skew: a handful of tasks running far longer or spilling far more than their peers.
  • Session and environment errors — the Spark session failed to start or died: capacity limits on concurrent sessions, a misconfigured environment, or a library conflict from custom packages. Check the driver log and the environment attached to the notebook.

Distinguish surfaces the way the exam does: cell output for code and data errors, driver and executor logs for session-level and infrastructure failures, the Spark UI for where memory and time actually went. And when a notebook fails only when invoked from a pipeline, compare parameters: the pipeline's notebook activity passes parameter values that may differ from your interactive defaults.

Eventhouse errors: diagnosing ingestion failures with KQL

Eventhouse (KQL database) errors are dominated by ingestion failures, and the diagnostic is a management command: .show ingestion failures returns the failure records, including the failing database and table, the error code, the failure detail, and whether the failure was permanent or transient. That distinction drives the fix: transient failures (throttling, temporary unavailability) are retried by the service and generally resolve; permanent failures mean the data or configuration is wrong and will fail every retry until you change something.

The common permanent classes:

  • Schema and mapping errors — the incoming records do not match the table's ingestion mapping: wrong field names, a mapping referencing a nonexistent column, or values that do not parse as the declared type (a malformed datetime, a string in a numeric column). Fix the mapping or the table schema; verify with a small sample ingestion.
  • Format errors — the payload is not the declared format (declared JSON but actually CSV, compressed unexpectedly, or corrupt files).
  • Permission errors — the ingesting identity lacks the required database-level permission to ingest into the target table.

Beyond ingestion, two more Eventhouse classes appear on the exam. Update policy failures: a transactional update policy that errors causes the source ingestion to fail too, so an unexplained ingestion failure on a table with update policies means testing the policy's query. And query-side errors: KQL semantic errors (unknown column, wrong operator usage) or queries that exceed limits on very large scans — resolved by correcting the query or narrowing its time range and filters rather than raising limits first.

Eventstream errors: connectivity and schema mismatches

An Eventstream fails at its edges — sources and destinations — and you diagnose it inside the Eventstream editor using data preview, data insights (per-node metrics), and runtime logs, since a continuously running stream has no run history in the Monitoring hub sense.

On the source side, the dominant class is connectivity and authentication: an external source's connection string, key, or credential is wrong or expired, or the network path to the source is blocked. The symptom is a source node showing errors in the runtime logs, or simply no incoming events in data insights. Verify by checking incoming event metrics: if nothing arrives at the first node, stop debugging transformations — the problem is upstream of Fabric.

Transformation nodes fail on data shape: an operation references a field that stopped appearing in the events, or a type assumption breaks when a producer changes its payload. Data preview at each node shows exactly where the shape diverges from what the downstream operator expects.

On the destination side, the classic error is a schema mismatch with an Eventhouse destination: the events no longer match the target table's schema or mapping, so events flow through the stream but fail to land. Fix the mapping or table, exactly as with direct Eventhouse ingestion. Lakehouse destinations fail similarly on type conversion into the Delta table.

Also recognize the resource class: a stream whose incoming rate outruns its processing shows growing latency in data insights. That is a throughput problem — addressed by simplifying in-stream operations or scaling — not an error to hunt in logs.

T-SQL and OneLake shortcut errors

T-SQL errors in a Fabric Warehouse (or the Lakehouse SQL analytics endpoint) fall into three classes you should name on sight:

  • Permission errors — the caller lacks access to the object: the fix is granting the appropriate permission (GRANT SELECT and friends), workspace role, or item permission — and remembering that the SQL analytics endpoint is read-only, so any INSERT, UPDATE, or CREATE TABLE against it fails by design; writes to Lakehouse tables happen through Spark, pipelines, or dataflows.
  • Unsupported-surface errors — a statement or data type the Warehouse does not support. Fabric Warehouse implements a subset of SQL Server's T-SQL surface, and constraints like primary keys exist only as NOT ENFORCED metadata. The fix is rewriting to a supported pattern, not retrying.
  • Transaction and conflict errors — Fabric Warehouse uses snapshot isolation; conflicting concurrent modifications can force one transaction to fail and roll back. The fix is retrying the transaction and reducing contention by scheduling conflicting writers apart.

OneLake shortcut errors come in two classes. Authorization: a shortcut to an external source such as ADLS Gen2 authenticates with the credentials stored in its cloud connection — if those expire or lose rights on the target, every read through the shortcut fails with an access error until the connection is fixed; internal OneLake shortcuts instead evaluate the calling user's permission on the target item, so one user reading a shortcut fine while another gets access-denied means a target-side permission gap. Path: the target folder or table was moved, renamed, or deleted, leaving a broken shortcut whose fix is recreating it against the current path. Remember a shortcut holds no data — errors are always about the target or the credentials, never about the shortcut's own contents.

Error type → likely cause → fix, and a worked scenario

Rehearse this table — it compresses the whole topic into the exam's question shape.

Error typeLikely causeFix
Pipeline activity fails intermittentlyTransient source fault or throttlingConfigure activity retry count and interval; rerun from failed activity
Pipeline Copy activity type/mapping errorSource schema drift vs sink mappingUpdate column mapping or destination schema
Dataflow Gen2 fails on schedule, works on demandCredential or gateway issue in scheduled contextUpdate connection credentials; verify gateway health
Dataflow Gen2 destination write errorQuery output type incompatible with destination columnFix query data types or destination mapping
Notebook driver out-of-memorycollect() / toPandas() on large dataKeep work distributed; aggregate or write to a table instead
Notebook executor out-of-memory / lostPartition skew or explosive joinRepartition, fix skewed keys; scale pool only if legitimately needed
Eventhouse permanent ingestion failureIngestion mapping or schema mismatch, bad formatInspect .show ingestion failures; correct mapping, schema, or format
Eventstream events not arrivingSource connection credential or endpoint errorFix source connection; confirm incoming metrics in data insights
Eventstream destination not receivingSchema mismatch with Eventhouse table or Lakehouse typesAlign table schema/mapping with event shape
T-SQL write fails on SQL analytics endpointEndpoint is read-only by designWrite via Spark, pipeline, or dataflow; query via the endpoint
T-SQL transaction rolled backSnapshot isolation conflict between concurrent writersRetry; schedule conflicting writers apart
Shortcut access denied for some usersInternal shortcut checks caller's permission on targetGrant permission on the target item
Shortcut suddenly unreadable for everyoneExternal connection credential expired, or target path moved/deletedUpdate the connection, or recreate the shortcut to the current path

Scenario: a nightly pipeline runs a notebook that reads an ADLS Gen2 shortcut and writes a Lakehouse table; it has failed for two nights. The notebook activity shows a failure; drilling into the notebook run, the cell throws an access error on the shortcut path. Classify: authentication — and because it fails for every identity, it is the shortcut's external connection, not a user permission. The storage key used by the connection was rotated. Fix the connection's credential, rerun the pipeline from the failed activity, and add an Activator rule on failed job events so the next credential rotation is caught the same night.

Tip. DP-700 tests this skill with symptom-to-cause scenarios: an error message or behavior pattern is described and you pick the cause or the fix. Trigger words include rerun from failed activity and retry policy (pipelines), fails on schedule but works on demand (dataflow credentials or gateway), collect or toPandas (driver OOM), .show ingestion failures and permanent versus transient (Eventhouse), schema mismatch at the destination (Eventstream), read-only endpoint (Lakehouse T-SQL), and access denied for one user (internal shortcut target permissions). Expect at least one multi-item chain where you must trace a parent pipeline failure through a child notebook or dataflow to the true underlying error.

Key takeaways
  • Classify every failure into one of five classes — authentication, connectivity, schema/data, resource, or logic — and fix the class, not the symptom.
  • Pipelines fail at the activity level: read the error details and evaluated input JSON, reserve retry policies for transient classes, and rerun from the failed activity.
  • Dataflow Gen2 diagnosis is table-by-table and phase-by-phase: evaluation errors point at the query or source, load errors point at destination mapping, types, or permissions.
  • Notebook out-of-memory splits by location: driver OOM means data was pulled local (collect, toPandas); executor OOM means skew or oversized partitions — repartition before scaling up.
  • Eventhouse ingestion problems are diagnosed with .show ingestion failures; permanent failures (mapping, schema, format) require a change, transient ones are retried by the service.
  • Eventstreams fail at their edges: source connectivity/auth on the way in, schema mismatch with the Eventhouse or Lakehouse destination on the way out — use data preview, data insights, and runtime logs.
  • The Lakehouse SQL analytics endpoint is read-only — write attempts fail by design; Warehouse conflicts under snapshot isolation are resolved by retrying and separating writers.
  • Shortcut errors are always about the target or the credentials: external shortcuts fail on their connection, internal shortcuts on the caller's permission at the target, and moved or deleted targets break the path.

Frequently asked questions

How do I find out why data stopped arriving in a KQL database table?

Run .show ingestion failures in the database and read the failure records for the table: the error code and detail identify the cause, and the record marks the failure permanent or transient. Permanent failures — mapping mismatches, schema or format problems, missing permissions — recur until you fix the mapping, schema, or credential; transient ones are retried by the service. If the table has a transactional update policy, test the policy's query too, since its failure fails the ingestion.

Why does my Dataflow Gen2 fail on its schedule but succeed when I refresh it manually?

That pattern almost always indicates an authentication or gateway problem in the scheduled context rather than a query bug: a stored credential has expired or an on-premises gateway is unavailable at run time. Update the connection's credentials and verify the gateway, then check the refresh history's failing table entry to confirm the error class.

What is the difference between driver and executor out-of-memory in a Fabric notebook?

Driver OOM means too much data was materialized on the single driver node — usually collect(), toPandas(), or large local objects — and the fix is keeping the work distributed. Executor OOM means individual workers ran out of memory processing their partitions, usually from skewed keys or oversized partitions; repartition and address the skew first, and scale the Spark pool only if the workload genuinely needs more memory.

Why can one user read through a OneLake shortcut while another gets access denied?

For internal OneLake shortcuts, access is evaluated against the calling user's permission on the target item, not the shortcut itself — so a user without rights on the target gets denied even though the shortcut sits in an item they can access. Grant the user permission on the target. If a shortcut fails for everyone, suspect the external connection's credential or a moved or deleted target path instead.

Why do INSERT statements fail against my Lakehouse in T-SQL?

The Lakehouse's SQL analytics endpoint is read-only by design: it exposes the Delta tables for T-SQL querying, but writes must go through Spark notebooks, pipelines, or Dataflow Gen2. If you need full T-SQL write capability, the data belongs in a Warehouse, where DML is supported.

When should I add a retry policy instead of fixing the error?

Only for genuinely transient classes: source throttling, temporary network faults, snapshot isolation conflicts, or momentary service unavailability. Deterministic failures — expired credentials, schema mismatches, permission gaps, logic errors — fail identically on every retry, so retrying them only delays the alert. Classify first, then decide.

Test yourself on this topic
Practice questions with full explanations.
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.