Dataverse "maximum allowable table row size of 8060 bytes" on import
A solution import adds columns and the table's row passes SQL Server's 8,060-byte limit. The limit can't be raised, so remove columns until the row fits.
DataverseFix a problem8 min read
You import a solution into another environment and it stops with a long message that ends: "This exceeds the maximum allowable table row size of 8060 bytes." The file itself isn't the problem. The solution brings columns that the target table doesn't have yet, and adding them would make one row of that table too wide for the database underneath. That size limit is fixed, so the only way through is fewer columns on the table.
- A solution import fails, and the details show a
FaultExceptionthat says creating or altering a table failed because its minimum row size would be more than 8,060 bytes. - The message names the table and two numbers: the row size the change needs, and how much of it is internal overhead. Microsoft's example shows 8070 and 1287.
- The solution adds columns to a table that already has many columns in the target environment.
Why the import fails
Microsoft's troubleshooting page traces this error to SQL Server, which allows 8,060 bytes per row. Every column takes some of those bytes, and how many depends on its data type.
The message itself says that creating or altering the table failed. Our reading of that: when an import adds columns, the table underneath has to change to hold them, and if the columns already there plus the new ones would need more than 8,060 bytes in a row, the change is refused and the import stops.
The word "minimum" matters. SQL Server's documentation explains that long variable-length values can be moved out of the row, leaving a 24-byte pointer behind, while other columns must still fit inside the 8,060 bytes. We read that as: the error is about how many columns the table has, and of what types, rather than about the data in them. Microsoft's workaround is about columns too: it doesn't mention data.
- Step 1The table's existing columns already use most of each row's 8,060 bytes
- Step 2The solution adds columns the target table doesn't have yet
- Step 3The row would pass 8,060 bytes, so the import fails
- Step 4Remove columns from the solution or the table
- Step 5Import again once the row fits
The limit can't be raised
Microsoft says plainly that the row limit can't be extended, and its page offers no setting to change it. Plan your fix around removing columns, not around a bigger limit.
Remove columns so the row fits
Microsoft's page says to remove columns, but not which ones. There are two places to look, and you can use both.
In the source environment: send fewer new columns
Start with the columns this import is trying to add.
- In the source environment, open the solution and the table, and list the columns that are new since the version the target already has.
- For each one you don't need yet, take it out of the solution. Removing a component from a solution leaves it in the environment, so nothing is lost. If nobody needs the column at all, delete it instead.
- Export the solution again and import the new file into the target.
In the target environment: delete columns nobody uses
If the table is full of old columns, removing some of them makes room.
- In Power Apps, open the table named in the message and go to its columns to see what's there.
- For each custom column you think is unused, check its dependencies first. Our guide on clearing component dependencies shows how to see what still uses a column.
- Delete the column and save the table.
Warning
Deleting a column deletes its data. Microsoft says the only way to get it back is to restore the database from a point before the delete. Export or back up anything you might need first.
Microsoft's rules for deleting a column also apply here:
- Microsoft describes deleting columns with the system administrator security role.
- You can delete only custom columns, and only ones that aren't part of a managed solution.
- Any dependency in another component must be removed first.
If the unused columns came from an earlier managed version of your own solution, you can't delete them in the target. Microsoft's documented way to remove a managed column is to take it out of the solution in the source environment, export it as managed, and import it into the target as an upgrade. An upgrade deletes components the new version no longer has, as long as nothing else in the target depends on them. (An update doesn't: it leaves them in place.)
Learn doesn't say whether one upgrade that both removes old columns and adds new ones avoids this error. If it fails again, our suggestion is to ship the removal as one version and the new columns as the next.
Which columns take the most room
Microsoft's troubleshooting page gives rough sizes per row for some column types. Some types add more than one column underneath, which is easy to miss when you count columns in the designer.
| Column type | Microsoft's estimate |
|---|---|
| Choice | 4 bytes |
| Date and time | 8 bytes |
| ID | 20 bytes or more |
| Lookup | Two or three columns underneath, 16 bytes or more |
| Image | Two columns, one for the image and one for its thumbnail |
| File | A pointer, so the size depends on the pointer |
| Currency | Two to four columns, depending on decimal conversion |
| Multiline text | Up to 24 bytes |
A few details from Microsoft's other pages explain these numbers:
- Currency columns. The first currency column on a table also adds a Currency lookup and an Exchange Rate column. Every currency column also gets a second column ending in
_Base, which holds the value in the base currency. - Image and file columns. Their data isn't kept in the relational store, and the troubleshooting page sizes them by their pointer.
The page doesn't give sizes for text, whole number, decimal or yes/no columns, so we don't either. Use the table above to find the expensive columns, not to add up an exact total.
Tip
Before you add a batch of new columns to a busy table, ask whether each one is needed now. Our guide to designing your first Dataverse schema covers choosing column types.
If removing columns doesn't help
Microsoft's page doesn't cover an import that still fails after you've removed columns. If that happens, an admin can open a support request from the support pages of the Power Platform admin center. Creating one needs an active support plan. Include the full error message and the table's name.
Do
- Read the table name in the message, and work on that table only.
- Remove new columns from the solution before deleting old ones from the target.
- Check dependencies and back up data before deleting a column.
Don't
- Don't look for a way to raise the limit; Microsoft says it can't be extended.
- Don't start by deleting rows of data; Microsoft's workaround removes columns.
- Don't try to delete a column in the target that a managed solution still owns.
Related guides
- "The solution file is invalid" is a different import error, about the file itself.
- Missing dependencies when you move a flow into a solution covers imports that fail because something is missing, not because a table is full.
Sources
- Maximum row size exceeds the allowed maximum during solution import — Microsoft Learn
- Create and edit columns in Dataverse using Power Apps: view and delete columns — Microsoft Learn
- Types of columns: currency, image and file columns — Microsoft Learn
- Create a solution: add or remove solution objects — Microsoft Learn
- Upgrade or update a solution: removing a managed component — Microsoft Learn
- Maximum capacity specifications for SQL Server: bytes per row — Microsoft Learn
- Page and extent architecture guide: large row support — Microsoft Learn
- Get support in the Power Platform admin center — Microsoft Learn
Add LowCodeStacks as a preferred source on Google
Did this fix it?
Comments
No comments yet. Share what worked for you.
Sign in to comment. Comments show under a display name you choose, never your email.