• The clue is in your question - "Note: I don't have any kind of index on this table."

    SQL Server treats heaps differently for inserts. The data page needs to be less than 81% full for another record to be inserted on the same page. That means that after you've inserted 7 records, you only want the page to be 80% full to avoid a second page being created. Doing the math, that gives us:

    0.80 * 8192 kb (page size) = 6553.6 kb

    6553.6 kb - 96 kb (page header) = 6457.6 kb

    6457.6 kb/7 = 922.5 bytes

    922.5 b - 9 b = 913.5 bytes (3 bytes null bitmap, 4 bytes record header, 2 bytes row offset)

    So 7 rows of 914 bytes should occupy less than 80% of the data page and allow insertion of an eighth record. You might even be able to use 915 or 916 bytes per record depending upon where the cutoff is between 80% and 81%. You can see the percentage full value in the Allocation Status section of the DBCC PAGE output.

    Allocation Status

    GAM (7:2) = ALLOCATED SGAM (7:3) = ALLOCATED

    PFS (7:1) = 0x62 MIXED_EXT ALLOCATED 80_PCT_FULL DIFF (7:6) = NOT CHANGED

    ML (7:7) = NOT MIN_LOGGED

    See the following article for more information.

    http://social.technet.microsoft.com/wiki/contents/articles/21877.sql-server-how-does-sql-server-allocate-space-in-a-heap.aspx