• No. LOB data are text/image and the variable length max data types. ROW_OVERFLOW_DATA can contain any variable length column. Ref Table and Index Organization

    ROW_OVERFLOW_DATA Allocation Unit

    For every partition used by a table (heap or clustered table), index, or indexed view, there is one ROW_OVERFLOW_DATA allocation unit. This allocation unit contains zero (0) pages until a data row with variable length columns (varchar, nvarchar, varbinary, or sql_variant) in the IN_ROW_DATA allocation unit exceeds the 8 KB row size limit. When the size limitation is reached, SQL Server moves the column with the largest width from that row to a page in the ROW_OVERFLOW_DATA allocation unit. A 24-byte pointer to this off-row data is maintained on the original page.

    Text/Image pages in the ROW_OVERFLOW_DATA allocation unit are managed in the same way pages in the LOB_DATA allocation unit are managed. That is, the Text/Image pages are managed by a chain of IAM pages.

    LOB_DATA Allocation Unit

    When a table or index has one or more LOB data types, one LOB_DATA allocation unit per partition is allocated to manage the storage of that data. The LOB data types include text, ntext, image, xml, varchar(max), nvarchar(max), varbinary(max), and CLR user-defined types.

    My following example contains no LOB data types, there is only one row inserted in the table, but the row still span multiple pages. One IN_ROW_DATA page and multiple ROW_OVERFLOW_DATA pages. And let me repeat, none of the data types are LOB data. The question explicitly excludes LOB data type, not variable length data types.

    use tempdb

    go

    create table test(

    c1 varchar(8000),

    c2 varchar(8000),

    c3 varchar(8000),

    c4 varchar(8000),

    c5 varchar(8000),

    c6 varchar(8000),

    c7 varchar(8000),

    c8 varchar(8000),

    c9 varchar(8000),

    c10 varchar(8000),

    c11 varchar(8000),

    c12 varchar(8000)

    )

    insert into test(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12)

    values(

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000),

    replicate('a',8000)

    )

    select * from sys.allocation_units where container_id=(select partition_id from sys.partitions where object_id=object_id('test'))