I found this from MichaelJasson : Why This is 8k? 1 MB = 128 pages. Now 1 MB = 1024 so we needed something that should divide this completely and that should now be cumbersome as well. You know that one row, if this doesn't fit into one page, is written on another page. One row can't be written on two pages. Keeping this in mind 8K was choosen as 4K would be too short and every row would have to be < 4K. [from
Actually the more I think of this, the more interesting it becomes since I used to think that if you needed to add a lot of text, say, over 100 characters wide, then you should use a text application like Word. A database just wasn't the place for lots of text! Databases were primarily thought of as tools for numbers and a little text (think GL and totals). So I can hear a developer from long ago thinking that we would never need that much space anyway. I also ran across this comment from Rick Strahl from 2004 too, who is one brilliant guy, I think: This is yet another instance where I'm surprised by some of the inflexibility that a SQL Backend provides. This limit seems pretty superficial based on some engine behavior that probably dates back to the Sybase days... [
The simple answer is: History. 8K sucks. It makes no sense. Bigger would be better. Unfortunately making the change would be an expensive opportunity cost for Microsoft and it would be disruptive and probably unpopular with customers when they upgraded. So there is little incentive to change it.