Guides

Diagnosing Power BI Scheduled Refresh Failures

2026-07-21 · 7 min read

A failed scheduled refresh is the quietest way to lose trust in BI: the report still opens, the numbers are just yesterday’s — or last week’s. By the time someone notices, the owner has usually been ignoring failure e-mails for days. This guide lists the failure causes we see most, how to confirm each one, and what monitoring should look like beyond a single dataset.

Where the evidence lives

Each semantic model keeps a refresh history (model settings → Refresh history, or the Get Refresh History REST API) with per-attempt status, duration and the error payload. Failure notifications go to the model owner only — which is exactly why tenant-wide failures go unnoticed.

The usual suspects

  • Expired or broken credentials. OAuth tokens lapse, service-account passwords rotate, people leave. The error mentions credentials, authentication or AAD. Fix by re-entering credentials on the data source — and prefer service principals over personal accounts wherever the source supports them.
  • Gateway problems. For on-premises sources: gateway offline, outdated, or missing the data source definition. Check the gateway cluster’s status page and update cadence; a single-node gateway is a single point of refresh failure.
  • Timeouts. Refreshes are capped at roughly 2 hours on shared and 5 hours on Premium/Fabric capacity. Models that creep toward the ceiling need incremental refresh, query folding checks, or fewer high-cardinality columns.
  • Memory and capacity pressure. On dedicated capacities a refresh can be evicted when concurrent refreshes and interactive load exceed the SKU’s memory. Symptoms: intermittent failures clustered at busy hours. Spread schedules or right-size the capacity.
  • Schedule pile-ups and limits. Shared capacity allows 8 scheduled refreshes per model per day, Premium/Fabric 48 — and dozens of models refreshing at 08:00 sharp compete for the same compute whether or not any single one hits its limit.
Rule of thumb: an error text mentioning credentials or AAD is an auth problem, gateway names a connectivity problem, and anything with timeout, memory or capacity is a resource problem — three different owners, three different fixes.

Monitoring beyond one dataset

Checking refresh history model-by-model does not scale past a handful of workspaces. Healthy tenants track, in one place: success rate over time, the models failing most often, when each last failed, and the failure cause class — because ten "credential expired" failures are one problem, not ten. PGR Sonar’s Refresh Health page does exactly this across the tenant, and on eligible plans an AI diagnosis groups each morning’s failures by likely cause with a concrete fix — so you wake up to a short list instead of a wall of red.

Frequently asked questions

How many scheduled refreshes are allowed per day?

Eight per day on shared capacity and 48 per day on Premium/Fabric capacity, per semantic model. Refreshes triggered via the REST API and incremental-refresh partitions follow their own rules, but the schedule picker itself enforces these caps.

Why does my refresh work manually but fail on schedule?

Usually authentication context. A manual refresh can piggyback on your fresh session, while the scheduled one uses the stored credentials — which may have expired, lost MFA compliance, or belong to someone who left. Gateway-bound sources add a second variant: the gateway machine is fine when you test interactively but offline or overloaded at the scheduled hour.

Do refresh timeouts differ by capacity?

Yes. A single refresh may run up to 2 hours on shared capacity and up to 5 hours on Premium/Fabric capacity. Models that keep hitting these ceilings are prime candidates for incremental refresh or model slimming.

Do this continuously, without the scripts

PGR Sonar inventories your whole Power BI / Fabric tenant, keeps usage, capacity and refresh history long-term, and flags what needs attention — read-only, metadata only, running on autopilot.

Start free 14-day trial

No credit card required.