• Varchar(max) Sparse???

    That's an incredibly weird definition.

    LOB columns take a 16 byte overhead unless null (that's normal, don't need sparse for that). If they're defined sparse but are populated, they take more than that.

    Personally I'd suggest removing the SPARSE attribute, that should drop the max row size to somewhere roughly around 5500 bytes (excluding header) assuming all the LOB is out of row.

    You won't have row overflow with that. Overflow is for non-MAX variable length data types.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass