Loading...

Canvas App Error: “Row Size Exceeded” – Causes, Fixes, and Best Practices

 Canvas App Error: “Row Size Exceeded” – Causes, Fixes, and Best Practices

When building Canvas Apps with Dataverse, you might see this error:

 The total size of the columns used in the database command exceeded the database limit.

 Cannot create a row of size 8087 which is greater than the allowable maximum row size of 8050.


If this caught you off guard, don’t worry. This error is not about your Power Fx formula—it’s a Dataverse + SQL Server limitation.



Why This Happens

Dataverse runs on top of Azure SQL and follows its row size limit (\~8 KB).

Here’s why you might hit this error:

1. Too Many Columns Selected

 Canvas Apps often load all columns by default, including:

  • Text and memo fields
  •  Lookup and choice fields
  •  Images and files
  •  Calculated or rollup fields

2. Temporary SQL Row Exceeds 8 KB

  • Behind the scenes, Dataverse queries try to build a temporary row.
  • If the sum of all columns exceeds 8,060 bytes, SQL blocks the operation.

 How to Fix the Row Size Issue

1. Only Select Required Columns

Use `ShowColumns()` to reduce row size:

ClearCollect(

    colContacts,

    ShowColumns(

        Contacts,

        "contactid",

        "firstname",

        "lastname",

        "emailaddress1",

        "mobilephone"

    )

)

This avoids large and unused columns like `Notes`, `Owner`, or `Image`.

2. Avoid Large Fields in the Main Query

  • Skip Images or Files in galleries.
  • Load multiline text fields only when needed.
  • Use `LookUp` or `OnSelect` to fetch details on-demand.

3. Use Delegation and Filtering

Never load the entire table if unnecessary:

ClearCollect(

    colContacts,

    ShowColumns(

        Filter(Contacts, StartsWith('First Name', TextSearchBox.Text)),

        "contactid", "firstname", "lastname", "emailaddress1"

    )

)

Keeps rows smaller and queries faster.

4. Split Large Tables

If your table has 100+ fields:

  • Move rarely used fields to a related child table.
  • Keeps your main table lean and performant.

5. Leverage Dataverse Views

Create a Dataverse view that includes only the columns your app needs.

  • Connect Canvas App to the view instead of the full table.
  • This drastically reduces row size and avoids SQL errors.

Quick Fix Example

Instead of loading everything from Contacts:

ClearCollect(

    colContacts,

    ShowColumns(

        Contacts,

        "contactid", "firstname", "lastname", "emailaddress1", "mobilephone"

    )

)

This reduces row size, prevents SQL errors, and speeds up your Canvas App.

 Pro Tips for Developers

  • Avoid Select All Columns in galleries or data collections.
  • Monitor delegation warnings to prevent partial data loads.
  • Optimize performance and memory usage with lean queries.

Summary:

The Dataverse row size limit in Canvas Apps is governed by SQL Server’s 8 KB (8,060 bytes) per-row limit. Exceeding this limit can occur when tables have too many text columns, lookup/choice fields, or file/image columns. When this happens, saving or retrieving data in Canvas Apps can fail.

To avoid this, follow best practices:

  • Select only the required columns in your queries.
  • Avoid pulling large fields (like file/image) in your main queries.
  • Use filtering and delegation to limit the data retrieved.
  • Consider connecting your Canvas App to Dataverse views optimized for performance.

By carefully managing the row size and retrieved fields, architects and developers can prevent database errors and ensure smooth Canvas App performance.

Published on:

Learn more
Power Platform , D365 CE & Cloud
Power Platform , D365 CE & Cloud

Dynamics 365 CE, Power Apps, Powerapps, Azure, Dataverse, D365,Power Platforms (Power Apps, Power Automate, Virtual Agent and AI Builder), Book Review

Share post:

Related posts

New quality updates to modern controls in canvas apps

This release delivers quality and reliability improvements across nine modern controls in canvas apps, including Combo Box, Text Input, and Da...

6 days ago

How to change the attachment on a note in canvas apps

Changing the attachment of a note is super easy in a model-driven app, not so much in a canvas app. Learn how to do it! The post How to change...

18 days ago

How to add a title and description when uploading an attachment in canvas apps

Uploading attachments through model-driven apps allows you to specify title & description but canvas app doesn't. Learn how you can! The...

20 days ago

How to work with Dataverse Attachments in canvas apps

Learn how to work with the Attachments Dataverse table in canvas apps. We will review how to create, delete, and view existing attachments! Th...

20 days ago

How to work with Dataverse Notes in canvas apps

Learn how to work with the Notes Dataverse table in canvas apps. We will review how to create, edit, delete, and view existing notes! The post...

20 days ago

Best Practices: Canvas Apps & Power Pages Integration

Golden Rule:Canvas Apps are NOT designed for external users. Power Pages is.Most best practices focus on when to avoid integration and how to ...

23 days ago

Integrating Canvas Apps into Power Pages

Step-by-Step Guide & Limitations Overview Power Pages and Canvas Apps solve different problems: However, in some scenarios, you may want t...

26 days ago

5 Dataverse Date Fields and the Date Picker in Canvas Apps

Within Dataverse we can configure date fields in 5 different ways. When we use these fields in a Power Apps Canvas App they will behave slight...

1 month ago

Generating and Sharing Screen in PDFs from D365 Sales Using Canvas Apps

In many Dynamics 365 Sales implementations, sales users need a simple and intuitive way to preview a quote, generate a PDF, and share it with ...

1 month ago

Power Apps – Deprecation of Preview Copilot Controls in Canvas Apps

Starting on February 2, 2026, the following preview Copilot features in Power Apps Canvas Apps will be removed: Copilot Control: Add a Copilot...

1 month ago
Stay up to date with latest Microsoft Dynamics 365 and Power Platform news!
* Yes, I agree to the privacy policy